https://github.com/muneebhashone/zira
https://github.com/muneebhashone/zira
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/muneebhashone/zira
- Owner: muneebhashone
- License: mit
- Created: 2024-08-16T05:17:40.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-16T20:45:00.000Z (over 1 year ago)
- Last Synced: 2024-10-11T20:09:38.630Z (over 1 year ago)
- Language: TypeScript
- Size: 246 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
✨ Zira ✨
Robust backend boilerplate designed for scalability, flexibility, and ease of development. It's packed with modern technologies and best practices to kickstart your next backend project.
## Prerequisites
Before you get started, make sure you have the following installed on your machine:
- **Docker + Docker Compose**
- **PNPM**
- **Node.js 20+ (LTS)**
## How to Run
1. **Set up Docker Services**:
- Run the following command to start MongoDB and Redis instances locally:
```sh
docker compose up -d
```
2. **Install Dependencies**:
- Use pnpm to install all the necessary dependencies:
```sh
pnpm i
```
3. **Configure Environment Variables**:
- Create a `.env` file in the root directory.
- Use the provided `.env.sample` as a template to enter all the required environment variables.
## What's Included
- **OpenAPI Autogenerated Swagger Docs** : Automatically generated Swagger docs through MagicRouter API and Zod, accessible at `/api-docs`.
- **Auth Module**: Includes Google Sign-In support for easy authentication.
- **User Management**: Comprehensive user management functionality.
- **File Upload**: Handles file uploads with Multer and Amazon S3.
- **Data Validation & Serialization**: Zod is used for validation and serialization of data.
- **Configuration Management**: Managed using dotenv-cli and validated with Zod for accuracy and safety.
- **Middlewares**:
- **Authorization**: Built-in authorization middleware.
- **Zod Schema Validation**: Ensures your API inputs are correctly validated.
- **JWT Extraction**: Easily extract and verify JWT tokens.
- **Type-safe Email Handling**: Emails are managed using Nodemailer with EJS templating.
- **Queues**: Powered by BullMQ with Redis for handling background jobs.
- **ESLint Setup**: Pre-configured ESLint setup for consistent code quality.
```sh
pnpm run lint
```
- **Development Server**: Run the server in development mode using ts-node-dev:
```sh
pnpm run dev
```
- **Build Process**: Efficiently bundle your project using tsup:
```sh
pnpm run build
```
- **PM2 Support**: Out-of-the-box support for PM2 to manage your production processes.
## Roadmap
- **Socket.io Support:** Adding support for Redis adapter and a chat module.
- **Notification Infrastructure**: Notifications via FCM and Novu.
- **React-Email and Mailgun Support** : Improve email management with React-Email and Mailgun for more dynamic and flexible email handling.
- **Ansible Playbook** : Create an Ansible playbook for server configuration to set up a basic environment quickly and consistently.
- **AWS CDK Support** : Integrate AWS CDK for infrastructure management, making it easier to deploy and manage cloud resources.
- **Monorepo Support** : Implement monorepo architecture using Turborepo and Pnpm for better project organization and scalability.
- **AWS Lambda Support** : Add support for deploying serverless functions on AWS Lambda.
- **Cloudflare Workers Support** : Enable Cloudflare Workers support for edge computing and faster request handling.
- **Postgres Support with Prisma** : Add support for PostgreSQL using Prisma ORM for better relational database management.
- **Containerization with Docker** : Implement containerization to ensure the project can be easily deployed to any environment using Docker.
- **Kubernetes Support** : Integrate Kubernetes for container orchestration, enabling scalable and automated deployment of the application.
- **CI/CD with GitHub Actions** : Implement a CI/CD pipeline using GitHub Actions to automate testing, building, and deployment processes.
- **Testing with Jest**: Add support for unit and integration testing using Jest to ensure code reliability and maintainability.
## Contributions
Feel free to contribute to this project by submitting issues or pull requests. Let's build something amazing together!
## **License**
This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.