Files
SkyArtShop/docs/project-logs/PROJECT_README.md

352 lines
7.5 KiB
Markdown
Raw Normal View History

2026-01-01 22:24:30 -06:00
# 🎨 SkyArtShop - Production-Ready Architecture
**Modern, scalable full-stack web application with proper separation of concerns.**
---
## 🏗️ Architecture Overview
```
SkyArtShop/
├── frontend/ # React + TypeScript + Vite
├── backend/ # Node.js + Express + Prisma
├── docs/ # Architecture documentation
└── setup.sh # Quick start script
```
### Frontend Stack
- **React 18** - Modern UI library
- **TypeScript** - Type safety
- **Vite** - Lightning-fast build tool
- **React Router** - Client-side routing
- **Axios** - HTTP client with interceptors
- **Tailwind CSS** - Utility-first styling
### Backend Stack
- **Node.js + Express** - Web server
- **TypeScript** - Type safety
- **Prisma ORM** - Type-safe database access
- **PostgreSQL** - Production database
- **JWT** - Authentication
- **Zod** - Request validation
---
## 🚀 Quick Start
### Automated Setup (Recommended)
```bash
./setup.sh
```
### Manual Setup
#### 1. Install Dependencies
**Frontend:**
```bash
cd frontend
npm install
```
**Backend:**
```bash
cd backend
npm install
```
#### 2. Configure Environment
**Backend:** Update `backend/.env`:
```env
PORT=3000
DATABASE_URL="postgresql://user:password@localhost:5432/skyartshop"
JWT_SECRET=your-secret-key
CORS_ORIGIN=http://localhost:5173
```
**Frontend:** Update `frontend/.env`:
```env
VITE_API_URL=http://localhost:3000/api
```
#### 3. Set Up Database
```bash
cd backend
npx prisma generate
npx prisma migrate dev
```
#### 4. Start Development Servers
**Terminal 1 - Backend:**
```bash
cd backend
npm run dev
# Runs on http://localhost:3000
```
**Terminal 2 - Frontend:**
```bash
cd frontend
npm run dev
# Runs on http://localhost:5173
```
---
## 📁 Project Structure
### Frontend Structure
```
frontend/
├── src/
│ ├── @types/ # TypeScript definitions
│ ├── api/ # API client & endpoints
│ ├── assets/ # Images, fonts, icons
│ ├── components/ # Reusable UI components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components (routes)
│ ├── routes/ # Router configuration
│ ├── templates/ # Page layouts
│ ├── themes/ # Design system
│ ├── utils/ # Helper functions
│ ├── validators/ # Form validation
│ ├── app.tsx # Root component
│ └── main.tsx # Entry point
├── index.html
├── vite.config.ts
├── tailwind.config.ts
└── package.json
```
### Backend Structure
```
backend/
├── prisma/
│ └── schema.prisma # Database schema
├── src/
│ ├── @types/ # TypeScript definitions
│ ├── config/ # App configuration
│ ├── controllers/ # Request handlers
│ ├── services/ # Business logic
│ ├── models/ # Data access layer
│ ├── routes/ # API endpoints
│ ├── middlewares/ # Express middleware
│ ├── validators/ # Request validation
│ ├── helpers/ # Utility functions
│ └── server.ts # Entry point
├── tsconfig.json
└── package.json
```
---
## 📚 Documentation
- **[ARCHITECTURE.md](docs/ARCHITECTURE.md)** - Complete architecture guide with examples
- **[STRUCTURE_COMPLETE.md](docs/STRUCTURE_COMPLETE.md)** - Structure comparison & overview
- **[frontend/readme.md](frontend/readme.md)** - Frontend documentation
- **[backend/readme.md](backend/readme.md)** - Backend documentation
---
## 🎯 Key Features
### ✅ Frontend Features
- Type-safe API client with automatic auth token injection
- Custom hooks for authentication and data fetching
- Protected routes with automatic redirect
- Centralized theming and design system
- Form validation matching backend schemas
- Utility functions for formatting and validation
### ✅ Backend Features
- Layered architecture (Controllers → Services → Models)
- JWT authentication with middleware
- Global error handling with consistent responses
- Request validation with Zod schemas
- Prisma ORM with type-safe queries
- Security middleware (Helmet, CORS, Compression)
- Request logging for debugging
---
## 📝 How to Add a New Feature
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for a complete step-by-step guide on adding the "Wishlist" feature.
### Quick Overview
**Backend:**
1. Update Prisma schema
2. Create service (business logic)
3. Create controller (request handler)
4. Add routes
5. Add validation
**Frontend:**
1. Add TypeScript types
2. Create API client methods
3. Create custom hook (optional)
4. Use in components
---
## 🔐 Security
- JWT authentication on protected endpoints
- Password hashing with bcrypt
- Input validation with Zod
- Security headers with Helmet
- CORS configured for specific origins
- SQL injection prevention via Prisma
- Client-side route protection
---
## 🧪 Testing
### Frontend
```bash
cd frontend
npm run test:unit # Component tests
npm run test:integration # Hook tests
npm run test:e2e # End-to-end tests
```
### Backend
```bash
cd backend
npm run test:unit # Service tests
npm run test:integration # Route tests
npm run test:api # API tests
```
---
## 🚢 Deployment
### Frontend (Vercel/Netlify)
```bash
cd frontend
npm run build
# Deploy dist/ folder
```
### Backend (Railway/Heroku/AWS)
```bash
cd backend
npm run build
# Set environment variables
# Run: npm start
```
---
## 🛠️ Development Scripts
### Frontend
```bash
npm run dev # Start dev server
npm run build # Production build
npm run preview # Preview production build
npm run lint # Run linter
```
### Backend
```bash
npm run dev # Start dev server (hot reload)
npm run build # Compile TypeScript
npm start # Run production server
npm run prisma:generate # Generate Prisma client
npm run prisma:migrate # Run migrations
npm run prisma:studio # Open Prisma Studio
```
---
## 📊 Tech Stack Summary
| Layer | Technology | Purpose |
|-------|-----------|---------|
| **Frontend** | React 18 | UI framework |
| | TypeScript | Type safety |
| | Vite | Build tool |
| | React Router | Routing |
| | Axios | HTTP client |
| | Tailwind CSS | Styling |
| **Backend** | Node.js + Express | Server |
| | TypeScript | Type safety |
| | Prisma | ORM |
| | PostgreSQL | Database |
| | JWT | Authentication |
| | Zod | Validation |
| **DevOps** | Git | Version control |
| | npm | Package management |
| | ESLint/Biome | Code quality |
---
## 💡 Why This Architecture?
**Scalable**: Clear separation enables independent scaling
**Maintainable**: Each file has a single, clear responsibility
**Testable**: Layers can be tested in isolation
**Team-Friendly**: Multiple developers work without conflicts
**Production-Ready**: Security, error handling, logging built-in
**Type-Safe**: TypeScript catches bugs before runtime
**Industry Standard**: Follows best practices from top companies
---
## 🤝 Contributing
1. Create feature branch: `git checkout -b feature/name`
2. Follow folder structure conventions
3. Add tests for new features
4. Update documentation
5. Submit pull request
---
## 📞 Support
- **Documentation**: See `docs/` folder
- **Issues**: Check existing issues or create new one
- **Questions**: Review architecture docs first
---
## 📄 License
[Your License Here]
---
**Built with ❤️ using modern web technologies**
🎉 **Happy coding!**