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