π¨πΌβπ»π π» This Christmas season, I had the joy of revamping a game I host every year, bringing people together and spreading Christmas vibes! πβ¨
The game, a mobile-optimized web app designed as a real-life search challenge, delivered a daily βpicture of the dayβ via Telegram and Slack. Participants used the appβs map and location features to explore and find the spot in real life.
This year, I introduced exciting upgrades: a sleek UI built with Vue.js, a robust backend powered by TypeScript-based GraphQL, and hosting on K3s at Hetzner ARM. All game content, like the daily pictures, was managed via Strapi, a headless CMS that made content management seamless and efficient. Static content was delivered via AWS S3 and CloudFront, with GitHub Actions managing CI/CD.
β»οΈ Iβm already planning improvements for next year:
- π After several projects in Vue, Iβm looking forward to diving into SSR with Nuxt.js to further enhance the user experience.
- π OpenFGA as fine grained authorization for multi region support
- ποΈ For the backend, Iβm considering GraphQL with π¦ Rust, leveraging async-graphql for a faster, more efficient solution (and honestly, Rust is just fun to work with!). Alternatively, Iβm also exploring GraphQL with NestJS, as the current implementation is based on TypeScript on top of the default Apollo Server/Fastify setup.
Creating this game each year is such a rewarding experienceβitβs the perfect opportunity to experiment with new tech while staying focused on delivering the core business logic. I canβt wait to see what next year brings! ππ
TypeScript, GraphQL (Apollo Server), Prisma, Strapi, K3S, PostgreSQL, Hetzner, AWS S3, AWS CloudFront, Kubernetes
TypeScript, Vue.js, Tailwind CSS, DaisyUI