[{"data":1,"prerenderedAt":205},["ShallowReactive",2],{"slug-content-de-\u002Fprojects\u002Fcontactsync-tebbe-dev":3},{"kind":4,"item":5,"categories":58},"project",{"id":6,"title":7,"body":8,"dateEnd":35,"dateStart":35,"description":36,"extension":37,"featuredInCv":38,"link":39,"meta":40,"navigation":41,"path":42,"repo":43,"seo":44,"stem":45,"tags":46,"__hash__":57},"projects_de\u002Fprojects\u002Fcontactsync-tebbe-dev.md","contactsync.tebbe.dev",{"type":9,"value":10,"toc":30},"minimark",[11,16,20],[12,13,15],"h2",{"id":14},"über-das-projekt","Über das Projekt",[17,18,19],"p",{},"Ein Tool, um meine Kontakte von Google Contacts mit meinem IP-Telefon zu synchronisieren",[17,21,22,23,26,27,29],{},"Ich habe einige Zeit lang ein IP-Telefon von Grundstream genutzt, dieses verfügte über die Möglichkeit, ein Kontaktbuch als XML von einer Webadresse zu importieren.",[24,25],"br",{},"\nWas fehlte, war die Möglichkeit, mein Google Contacts Kontaktbuch in so eine XML zu konvertieren, daher habe ich dieses Projekt entwickelt.",[24,28],{},"\nNach einem Login mit seinem Google Account wird ein einzigartiger Link generiert, welches gleichzeitig ein Passwort enthält und ein entsprechendes XML-Dokument bereitstellt.",{"title":31,"searchDepth":32,"depth":32,"links":33},"",2,[34],{"id":14,"depth":32,"text":15},"2020-07","Tool, um meine Kontakte von Google Contacts mit meinem IP-Telefon zu synchronisieren.","md",false,null,{},true,"\u002Fprojects\u002Fcontactsync-tebbe-dev","https:\u002F\u002Fgithub.com\u002FLinusTebbe\u002Fcontactsync.tebbe.dev",{"title":7,"description":36},"projects\u002Fcontactsync-tebbe-dev",[47,48,49,50,51,52,53,54,55,56],"php","laravel","sql","oidc","rest","html5","css3","vuejs","nginx","git","augVpZr6Zh1br-wvV5cRaAzkmLq0daNnz31xLPoT1P8",[59,67,86,106,134,146,155,164],{"name":60,"items":61},"Datenbanken",[62,64],{"slug":49,"name":63},"SQL (MySQL, MariaDB)",{"slug":65,"name":66},"sqlite","SQLite",{"name":68,"items":69},"Frontend",[70,72,74,77,80,83],{"slug":52,"name":71},"HTML5",{"slug":53,"name":73},"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-Ökosystem",[89,92,95,98,100,103],{"slug":90,"name":91},"javascript","JavaScript",{"slug":93,"name":94},"typescript","TypeScript",{"slug":96,"name":97},"nodejs","Node.js",{"slug":54,"name":99},"Vue.js",{"slug":101,"name":102},"nuxt","Nuxt.JS",{"slug":104,"name":105},"deno","Deno",{"name":107,"items":108},"Backend",[109,111,113,116,119,122,125,128,131],{"slug":47,"name":110},"PHP",{"slug":48,"name":112},"Laravel",{"slug":114,"name":115},"symfony","Symfony",{"slug":117,"name":118},"laminas","Laminas",{"slug":120,"name":121},"mezzio","Mezzio",{"slug":123,"name":124},"zend","Zend Framework",{"slug":126,"name":127},"wordpress","WordPress",{"slug":129,"name":130},"shopware","Shopware",{"slug":132,"name":133},"spryker","Spryker",{"name":135,"items":136},"Mobile",[137,140,143],{"slug":138,"name":139},"dart","Dart",{"slug":141,"name":142},"flutter","Flutter",{"slug":144,"name":145},"android","Android",{"name":147,"items":148},"Weitere Sprachen",[149,152],{"slug":150,"name":151},"java","Java",{"slug":153,"name":154},"python","Python",{"name":156,"items":157},"Betriebssysteme",[158,161],{"slug":159,"name":160},"linux","Linux",{"slug":162,"name":163},"windows","Windows",{"name":165,"items":166},"Sonstiges",[167,169,172,175,178,181,184,186,189,192,195,197,199,202],{"slug":56,"name":168},"Git",{"slug":170,"name":171},"docker","Docker",{"slug":173,"name":174},"jenkins","Jenkins",{"slug":176,"name":177},"jvm","JVM",{"slug":179,"name":180},"aws","AWS",{"slug":182,"name":183},"cloudflare","Cloudflare",{"slug":55,"name":185},"Nginx",{"slug":187,"name":188},"redis","Redis",{"slug":190,"name":191},"networking","Netzwerk",{"slug":193,"name":194},"rabbitmq","RabbitMQ",{"slug":50,"name":196},"OIDC",{"slug":51,"name":198},"REST",{"slug":200,"name":201},"terraform","Terraform",{"slug":203,"name":204},"cicd","CI\u002FCD",1782416852384]