[{"data":1,"prerenderedAt":209},["ShallowReactive",2],{"slug-content-en-\u002Fprojects\u002Fftptogit":3},{"kind":4,"item":5,"categories":55},"project",{"id":6,"title":7,"body":8,"dateEnd":40,"dateStart":40,"description":41,"extension":42,"featuredInCv":43,"link":44,"meta":45,"navigation":46,"path":47,"repo":44,"seo":48,"stem":49,"tags":50,"__hash__":54},"projects_en\u002Fprojects\u002Fftptogit.md","FtpToGit",{"type":9,"value":10,"toc":34},"minimark",[11,16,24,28],[12,13,15],"h2",{"id":14},"about-the-project","About the Project",[17,18,19,20,23],"p",{},"I was commissioned by a web agency to develop a tool that helps them log configuration changes on client servers.",[21,22],"br",{},"\nAt the agency's request, this was built with Laravel Lumen, a stripped-down version of Laravel optimized for console applications.",[12,25,27],{"id":26},"how-it-works","How It Works",[17,29,30,31,33],{},"The tool can be configured for any number of client servers, with individual glob-style exclude lists, similar to a .gitignore file.\nAfter connecting to the client's server, the files are checked for changes and then logged in a local Git repository, which is then pushed to a remote Git server.",[21,32],{},"\nThis way, Git's excellent version control is used to log every configuration change, which greatly simplifies troubleshooting in everyday agency work.",{"title":35,"searchDepth":36,"depth":36,"links":37},"",2,[38,39],{"id":14,"depth":36,"text":15},{"id":26,"depth":36,"text":27},"2019-12","Laravel console application for monitoring a remote FTP host.","md",false,null,{},true,"\u002Fprojects\u002Fftptogit",{"title":7,"description":41},"projects\u002Fftptogit",[51,52,53],"php","laravel","git","ttr-GHptjk2BnywsGNPTyl8umNAT_qHOoEdzqsFU3d4",[56,65,86,107,135,147,156,165],{"name":57,"items":58},"Databases",[59,62],{"slug":60,"name":61},"sql","SQL (MySQL, MariaDB)",{"slug":63,"name":64},"sqlite","SQLite",{"name":66,"items":67},"Frontend",[68,71,74,77,80,83],{"slug":69,"name":70},"html5","HTML5",{"slug":72,"name":73},"css3","CSS3",{"slug":75,"name":76},"tailwindcss","Tailwind CSS",{"slug":78,"name":79},"bootstrap","Bootstrap",{"slug":81,"name":82},"uikit","UIkit",{"slug":84,"name":85},"extjs","Ext JS",{"name":87,"items":88},"JavaScript Ecosystem",[89,92,95,98,101,104],{"slug":90,"name":91},"javascript","JavaScript",{"slug":93,"name":94},"typescript","TypeScript",{"slug":96,"name":97},"nodejs","Node.js",{"slug":99,"name":100},"vuejs","Vue.js",{"slug":102,"name":103},"nuxt","Nuxt.JS",{"slug":105,"name":106},"deno","Deno",{"name":108,"items":109},"Backend",[110,112,114,117,120,123,126,129,132],{"slug":51,"name":111},"PHP",{"slug":52,"name":113},"Laravel",{"slug":115,"name":116},"symfony","Symfony",{"slug":118,"name":119},"laminas","Laminas",{"slug":121,"name":122},"mezzio","Mezzio",{"slug":124,"name":125},"zend","Zend Framework",{"slug":127,"name":128},"wordpress","WordPress",{"slug":130,"name":131},"shopware","Shopware",{"slug":133,"name":134},"spryker","Spryker",{"name":136,"items":137},"Mobile",[138,141,144],{"slug":139,"name":140},"dart","Dart",{"slug":142,"name":143},"flutter","Flutter",{"slug":145,"name":146},"android","Android",{"name":148,"items":149},"Other Languages",[150,153],{"slug":151,"name":152},"java","Java",{"slug":154,"name":155},"python","Python",{"name":157,"items":158},"Operating Systems",[159,162],{"slug":160,"name":161},"linux","Linux",{"slug":163,"name":164},"windows","Windows",{"name":166,"items":167},"Other",[168,170,173,176,179,182,185,188,191,194,197,200,203,206],{"slug":53,"name":169},"Git",{"slug":171,"name":172},"docker","Docker",{"slug":174,"name":175},"jenkins","Jenkins",{"slug":177,"name":178},"jvm","JVM",{"slug":180,"name":181},"aws","AWS",{"slug":183,"name":184},"cloudflare","Cloudflare",{"slug":186,"name":187},"nginx","Nginx",{"slug":189,"name":190},"redis","Redis",{"slug":192,"name":193},"networking","Networking",{"slug":195,"name":196},"rabbitmq","RabbitMQ",{"slug":198,"name":199},"oidc","OIDC",{"slug":201,"name":202},"rest","REST",{"slug":204,"name":205},"terraform","Terraform",{"slug":207,"name":208},"cicd","CI\u002FCD",1782416851945]