Techstack
This document describes the technology stack used in different profiles of the project.
RealWorld API
The RealWorld API is a standard implementation of the RealWorld specification.
Backend Stack
- Framework: NestJS - A progressive Node.js framework with Fastify HTTP engine
- Language: TypeScript - Typed JavaScript
- Database: PostgreSQL - Relational database
- ORM: TypeORM - Object-Relational Mapping
- Authentication: JWT - JSON Web Tokens
- API Documentation: Swagger/OpenAPI - API documentation
- Testing:
Key Features
- RESTful API endpoints
- JWT-based authentication
- PostgreSQL database integration
- TypeORM for database operations
- Swagger documentation
- Request validation
- Error handling
- Logging with Winston
RealWorldX API
The RealWorldX API is an extended version with additional features and optimizations.
Backend Stack
- Framework: NestJS - A progressive Node.js framework with Fastify HTTP engine
- Language: TypeScript - Typed JavaScript
- Database: MySQL - Relational database
- ORM: TypeORM - Object-Relational Mapping
- Caching: Redis - In-memory data store
- Authentication:
- API Documentation: Swagger/OpenAPI - API documentation
- Testing:
Key Features
- All features from RealWorld API
- OAuth2 authentication support
- Redis caching for performance optimization
- MySQL database integration
- Enhanced security features
- Rate limiting
- Request validation
- Advanced error handling
- Performance monitoring with New Relic
- Error tracking with Sentry
Web Application
The web application is the frontend implementation.
Frontend Stack
- Framework: React - JavaScript library for building user interfaces
- Language: TypeScript - Typed JavaScript
- State Management: Redux Toolkit - State management
- Styling: Tailwind CSS - Utility-first CSS framework
- Testing:
- Jest - Testing framework
- React Testing Library - React component testing
- Build Tool: Vite - Next generation frontend tooling
Key Features
- Modern React with hooks
- Responsive design
- Component-based architecture
- State management with Redux
- Unit and integration testing
- TypeScript for type safety
- Tailwind CSS for styling
- Vite for fast development
Shared Packages
The project includes several shared packages used across different profiles:
API Package (@repo/api
)
- Common API utilities
- Shared DTOs
- API response types
- Error handling
- Validation decorators
- Common interfaces
Database Packages
TypeORM Package (@repo/database-typeorm
)
- TypeORM configurations
- Database migrations
- Entity definitions
- Repository patterns
- Query builders
MySQL Package (@repo/mysql-typeorm
)
- MySQL specific configurations
- MySQL migrations
- MySQL entity definitions
- MySQL query optimizations
Nest Common Package (@repo/nest-common
)
- Shared NestJS modules
- Common services
- Utility functions
- Custom decorators
- Guards and interceptors
- Exception filters
UI Package (@repo/ui
)
- Reusable React components
- Shared styles
- Design system
- Component documentation
- Storybook integration
Development Tools
- Package Manager: pnpm - Fast, disk space efficient package manager
- Build System: Turborepo - High-performance build system
- Code Quality:
- ESLint - Code linting
- Prettier - Code formatting
- Husky - Git hooks
- lint-staged - Run linters on staged files
- Version Control: Git - Distributed version control
- CI/CD: GitHub Actions - Continuous Integration/Deployment
- Containerization: Docker - Container platform
- Documentation:
- Next.js - React framework for documentation
- MDX - Markdown with JSX
- Tailwind CSS - Styling documentation
Last updated on