# SkyArtShop Backend Production-ready Node.js + Express + TypeScript backend for Sky Art Shop. ## 🚀 Quick Start ```bash # Install dependencies npm install # Set up database npx prisma generate npx prisma migrate dev # Run development server npm run dev # Build for production npm run build # Run production server npm start ``` ## 📁 Project Structure ``` backend/ ├── prisma/ │ └── schema.prisma # Database schema ├── src/ │ ├── @types/ # TypeScript definitions │ ├── config/ # Configuration files │ ├── controllers/ # Request handlers │ ├── services/ # Business logic │ ├── models/ # Data access layer │ ├── routes/ # API route definitions │ ├── middlewares/ # Express middleware │ ├── validators/ # Request validation │ ├── helpers/ # Utility functions │ └── server.ts # Entry point ├── .env ├── tsconfig.json └── package.json ``` ## 🛠️ Tech Stack - **Node.js** - Runtime - **Express** - Web framework - **TypeScript** - Type safety - **Prisma** - ORM - **PostgreSQL** - Database - **JWT** - Authentication - **Zod** - Validation ## 🔑 Environment Variables Create a `.env` file: ``` PORT=3000 NODE_ENV=development DATABASE_URL="postgresql://user:password@localhost:5432/skyartshop" JWT_SECRET=your-secret-key CORS_ORIGIN=http://localhost:5173 ``` ## 📝 Development Guidelines ### Folder Responsibilities - **controllers/**: Handle HTTP requests and responses - **services/**: Business logic and orchestration - **models/**: Database queries (Prisma models) - **routes/**: Define endpoints and apply middleware - **middlewares/**: Authentication, validation, logging - **validators/**: Zod schemas for request validation - **helpers/**: Pure utility functions ### Adding a New Feature 1. Create model in `prisma/schema.prisma` 2. Run `npx prisma migrate dev` 3. Create service in `src/services/` 4. Create controller in `src/controllers/` 5. Add routes in `src/routes/` 6. Add validators in `src/validators/` ## 🔒 Security - JWT authentication on protected routes - Input validation with Zod - Helmet for security headers - CORS configured - Rate limiting ready ## 📊 Database ```bash # Generate Prisma Client npx prisma generate # Create migration npx prisma migrate dev --name description # Open Prisma Studio npx prisma studio ```