juro oravec

Web app: Calorie Counter Demo

Demo project showcasing the best practices for a TypeScript-based web app.

updated 19 Feb 2022
typescriptpassport.jsexpresspostgresqlprismaredisdockerauthenticationvitevuevuetify

Demo project showcasing the best practices for a TypeScript-based web app.

Features

  • CRUD resources (e.g. user can create food entries)
  • Authentication (email + password; social login) using auth cookies
  • Authorization using user roles (user, admin)
  • Tiered GraphQL queries (different user roles have access to different queries)
  • User settings
  • Admin reports and views

Frontend

  • Apollo GraphQL
  • TypeScript
  • Vue3
  • Vuetify

Backend

  • GraphQL server
  • TypeScript
  • Prisma with PostgreSQL
  • Authentication layer with Express + Passport.js
  • Redis as a cache store
  • Dockerized
  • Reverse proxy using Nginx