Technical Specification
Architecture Overview
The application follows architecture with clear separation of concerns:
Frontend Layer: React-based SPA with TypeScript and Chakra UI
Backend Layer: NestJS API with TypeORM and PostgreSQL
GraphQL Layer: Hasura for instant GraphQL APIs
Authentication Layer: Keycloak for identity and access management
Infrastructure Layer: AWS services for hosting and deployment
Components & Interactions
This document defines the technical architecture and implementation plan for a web application using:
Beneficiary Backend: NestJS (TypeScript), TypeORM, JWT token, PostgreSQL and Hasura for GraphQL
Beneficiary Frontend: React (TypeScript), Chakra UI for UI components, custom hooks and context for state management
Deployment: AWS S3 and CloudFront (Frontend), Docker/EC2 for backend
Components & Tech Stack
Frontend
React Core library for building the user interface
TypeScript Adds static typing to JavaScript for better code quality
Chakra UI Used for building accessible and responsive UI components
React Router DOM Handles client-side routing and navigation
Axios For making HTTP requests to backend services
react-i18next Adds internationalization and language switching support
Vite Development server and fast bundler for modern front-end tooling
Backend
NestJS Stable and widely adopted; supports modular architecture and GraphQL
TypeORM Object-relational mapping for TypeScript and JavaScript
PostgreSQL Reliable and feature-rich relational database
GraphQL Query language and runtime for APIs; compatible with Apollo and NestJS
Docker Used for containerization and deployment
Keycloak Open-source identity and access management solution
Hasura Instant GraphQL engine for PostgreSQL; supports remote schemas, actions, and event triggers
DevOps & Hosting
AWS S3 Object storage service for hosting static frontend assets
AWS CloudFront Content delivery network for global distribution of frontend content
AWS EC2 Elastic compute cloud for hosting backend services
Docker Containerization platform for consistent deployment across environments