| Rambling while I drink my coffee: Tech stack:
React + Nextjs (react-query, graphql-generate, typescript), Django (admin panel, celery for background tasks, channels, graphql), Postgres, Redis (for celery and websockets). Postgres in RDS with auto rotating secrets. Deploy as a Django as a Docker image on AWS. Access keys from Secrets Manager at runtime (this is your pre EKS setup). Deploy frontend app on Vercel. Use Stripes newest payments system for billings. Deploy everything via GitHub actions PRs and use Actions, including the new code and dependency checks. Bam you’ve got a frontend with a busting cache, websockets for automatic updates, ability to do server side rendering, and all the content management systems from the Django admin panel you would have setup by hand with Express/Flask. You can choose to use any method of auth that Django provides or go with Auth0. Using graphql-generate and Django Graphene you can auto generate your typescript SDK on your frontend. All you have to worry about now is your view code and your models structure. Using celery and celery-beat will allow you to do long running or scheduled tasks. Connect it with Django channels and push updates from a celery worker to the frontend. GitHub will keep it up to date and check for security errors with automatic pull requests. Expansions on this architecture include:
- switching to EKS (useful especially for secrets and scale)
- Infra as code via Pulumi to switch to any K8s provider
- Using RabbitMQ for more robust messages passing over simple Redis queue |