{"id":31567308,"url":"https://github.com/redaezziani/manga-web-store-api","last_synced_at":"2026-04-12T22:09:51.059Z","repository":{"id":305715201,"uuid":"1023705181","full_name":"redaezziani/manga-web-store-api","owner":"redaezziani","description":"A modern, feature-rich REST API for managing a manga web store built with NestJS and TypeScript.","archived":false,"fork":false,"pushed_at":"2025-09-15T10:07:34.000Z","size":460,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-15T12:11:22.235Z","etag":null,"topics":["docker","expressjs","jwt","mariadb"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/redaezziani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-21T15:06:54.000Z","updated_at":"2025-09-15T10:08:22.000Z","dependencies_parsed_at":"2025-07-21T17:49:01.109Z","dependency_job_id":"0e0290f1-9eb4-486c-9f9e-a4ff9ea154c9","html_url":"https://github.com/redaezziani/manga-web-store-api","commit_stats":null,"previous_names":["redaezziani/manga-web-store","redaezziani/manga-web-store-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/redaezziani/manga-web-store-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redaezziani%2Fmanga-web-store-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redaezziani%2Fmanga-web-store-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redaezziani%2Fmanga-web-store-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redaezziani%2Fmanga-web-store-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redaezziani","download_url":"https://codeload.github.com/redaezziani/manga-web-store-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redaezziani%2Fmanga-web-store-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278431490,"owners_count":25985679,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","expressjs","jwt","mariadb"],"created_at":"2025-10-05T08:47:26.655Z","updated_at":"2025-10-05T08:47:31.440Z","avatar_url":"https://github.com/redaezziani.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📚 Manga Web Store API\n\nA modern, feature-rich REST API for managing a manga web store built with NestJS and TypeScript.\n\n## 🏷️ Technology Stack\n\n![NestJS](https://img.shields.io/badge/nestjs-%23E0234E.svg?style=for-the-badge\u0026logo=nestjs\u0026logoColor=white)\n![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![Node.js](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![Prisma](https://img.shields.io/badge/Prisma-3982CE?style=for-the-badge\u0026logo=Prisma\u0026logoColor=white)\n![MariaDB](https://img.shields.io/badge/MariaDB-003545?style=for-the-badge\u0026logo=mariadb\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n![JWT](https://img.shields.io/badge/JWT-black?style=for-the-badge\u0026logo=JSON%20web%20tokens)\n![Swagger](https://img.shields.io/badge/-Swagger-%23Clojure?style=for-the-badge\u0026logo=swagger\u0026logoColor=white)\n![ESLint](https://img.shields.io/badge/ESLint-4B3263?style=for-the-badge\u0026logo=eslint\u0026logoColor=white)\n![Prettier](https://img.shields.io/badge/prettier-%23F7B93E.svg?style=for-the-badge\u0026logo=prettier\u0026logoColor=black)\n![Jest](https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge\u0026logo=jest\u0026logoColor=white)\n\n## ✨ Features\n\n### 🔐 Authentication \u0026 Authorization\n- **JWT-based authentication** with Passport.js\n- **Role-based access control** (Admin, Moderator, User)\n- **Email verification** system\n- **Password reset** functionality\n- **Login history** tracking with device/location info\n- **Two-factor authentication** support\n- **Account status management** (Active, Suspended, etc.)\n\n### 📖 Manga Management\n- **Manga catalog** with detailed information (title, author, description)\n- **Category management** with multi-language support (EN/AR)\n- **Volume management** with pricing, stock, and availability\n- **Cover image** and preview image uploads\n- **Advanced search** and filtering capabilities\n\n### 🛒 E-commerce Features\n- **Shopping cart** functionality\n- **Wishlist** system for favorite manga\n- **Order management** with multiple status tracking\n- **Review and rating** system for manga\n- **Inventory management** with stock tracking\n- **Discount system** for volumes\n\n### 🌐 Additional Features\n- **Multi-language support** (English/Arabic)\n- **File upload** integration with Cloudinary\n- **Email notifications** via Resend\n- **API documentation** with Swagger/OpenAPI\n- **Pagination** for large datasets\n- **Data validation** with class-validator\n- **Comprehensive logging** and error handling\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Node.js** (v18 or higher)\n- **npm** or **yarn**\n- **Docker** and **Docker Compose**\n- **MariaDB** (or use Docker Compose)\n\n### Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/redaezziani/manga-web-store-api.git\n   cd manga-web-store-api\n   ```\n\n2. **Install dependencies**\n   ```bash\n   npm install --legacy-peer-deps\n   ```\n\n3. **Set up environment variables**\n   ```bash\n   cp .env.example .env\n   # Edit .env with your configuration\n   ```\n\n4. **Start the database**\n   ```bash\n   docker-compose up -d mariadb\n   ```\n\n5. **Set up the database**\n   ```bash\n   npx prisma generate\n   npx prisma db push\n   npx prisma db seed\n   ```\n\n6. **Start the development server**\n   ```bash\n   npm run start:dev\n   ```\n\nThe API will be available at `http://localhost:7000`\n\n## 📊 API Documentation\n\nOnce the server is running, you can access the interactive API documentation at:\n- **Swagger UI**: `http://localhost:7000/api/docs`\n\n## 🛠️ Development\n\n### Available Scripts\n\n```bash\n# Development\nnpm run start:dev          # Start with file watching\nnpm run start:debug        # Start in debug mode\n\n# Building\nnpm run build              # Build the application\nnpm run start:prod         # Start production build\n\n# Testing\nnpm run test               # Run unit tests\nnpm run test:watch         # Run tests in watch mode\nnpm run test:cov           # Run tests with coverage\nnpm run test:e2e           # Run end-to-end tests\n\n# Code Quality\nnpm run lint               # Run ESLint\nnpm run format             # Format code with Prettier\n\n# Database\nnpx prisma generate        # Generate Prisma client\nnpx prisma db push         # Push schema to database\nnpx prisma db seed         # Seed database with sample data\nnpx prisma studio          # Open Prisma Studio\n```\n\n### Project Structure\n\n```\nsrc/\n├── auth/                  # Authentication module\n├── cart/                  # Shopping cart functionality\n├── common/                # Shared utilities and services\n├── database/              # Database configuration\n├── integration/           # External service integrations\n├── manga/                 # Manga and category management\n├── order/                 # Order management\n├── smtp/                  # Email service\n├── storage/               # File upload and storage\n├── volume/                # Manga volume management\n├── wishlist/              # User wishlist functionality\n├── app.module.ts          # Main application module\n└── main.ts                # Application entry point\n```\n\n## 🔧 Configuration\n\n### Environment Variables\n\nCreate a `.env` file with the following variables:\n\n```env\n# Database\nDATABASE_URL=\"mysql://user:password@localhost:3306/mangastore\"\n\n# JWT\nJWT_SECRET=\"your-jwt-secret\"\nJWT_EXPIRES_IN=\"7d\"\n\n# Cloudinary (for file uploads)\nCLOUDINARY_CLOUD_NAME=\"your-cloud-name\"\nCLOUDINARY_API_KEY=\"your-api-key\"\nCLOUDINARY_API_SECRET=\"your-api-secret\"\n\n# Email (Resend)\nRESEND_API_KEY=\"your-resend-api-key\"\nFROM_EMAIL=\"noreply@yourdomain.com\"\n\n# Application\nPORT=7000\n```\n\n## 🐳 Docker Deployment\n\nThe project includes Docker Compose configuration for easy deployment:\n\n```bash\n# Start all services\ndocker-compose up -d\n\n# View logs\ndocker-compose logs -f\n\n# Stop services\ndocker-compose down\n```\n\n## 🧪 Testing\n\nThe project uses Jest for testing. Test files are located alongside source files with `.spec.ts` extension.\n\n```bash\n# Run all tests\nnpm run test\n\n# Run tests with coverage\nnpm run test:cov\n\n# Run e2e tests\nnpm run test:e2e\n```\n\n## 📄 API Endpoints\n\n### Authentication\n- `POST /api/v1/auth/register` - User registration\n- `POST /api/v1/auth/login` - User login\n- `POST /api/v1/auth/refresh` - Refresh JWT token\n- `POST /api/v1/auth/forgot-password` - Request password reset\n\n### Manga Management\n- `GET /api/v1/manga` - Get all manga with pagination\n- `GET /api/v1/manga/:id` - Get manga by ID\n- `POST /api/v1/manga` - Create new manga (Admin)\n- `PUT /api/v1/manga/:id` - Update manga (Admin)\n- `DELETE /api/v1/manga/:id` - Delete manga (Admin)\n\n### Categories\n- `GET /api/v1/manga/categories` - Get all categories\n- `POST /api/v1/manga/categories` - Create category (Admin)\n\n### Cart \u0026 Orders\n- `GET /api/v1/cart` - Get user cart\n- `POST /api/v1/cart/items` - Add item to cart\n- `POST /api/v1/orders` - Create order from cart\n- `GET /api/v1/orders` - Get user orders\n\nFor complete API documentation, visit the Swagger UI when the server is running.\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Guidelines\n\n- Follow TypeScript best practices\n- Use ESLint and Prettier for code formatting\n- Write tests for new features\n- Update documentation when needed\n- Follow conventional commit messages\n\n## 📝 License\n\nThis project is licensed under the [UNLICENSED](LICENSE) license.\n\n## 👨‍💻 Author\n\n**Reda Ezziani**\n- GitHub: [@redaezziani](https://github.com/redaezziani)\n\n## 🙏 Acknowledgments\n\n- [NestJS](https://nestjs.com/) - A progressive Node.js framework\n- [Prisma](https://www.prisma.io/) - Next-generation ORM for Node.js\n- [MariaDB](https://mariadb.org/) - Reliable and performant database\n- [Cloudinary](https://cloudinary.com/) - Image and video management\n- [Resend](https://resend.com/) - Email delivery service\n\n---\n\n⭐ **Star this repository if you find it helpful!**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredaezziani%2Fmanga-web-store-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredaezziani%2Fmanga-web-store-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredaezziani%2Fmanga-web-store-api/lists"}