Administrative platform for managing Vinteeks website content, products, images, and customer inquiries.
Vinteeks CMS is the internal administration application used to manage data consumed by the public Vinteeks website.
The system is separated into:
- Public website
- CMS application
- AWS serverless APIs
- Shared TypeScript models
This repository contains the CMS application and backend services.
vinteeks-cms/
├── client/
├── server/
└── shared/
React administration application.
Responsibilities:
- Dashboard
- Inquiry management
- Product management
- Module management
- Image management
Technology:
- React
- TypeScript
- Vite
- React Router
- Tailwind CSS
AWS Lambda functions and backend integrations.
Responsibilities:
- Read inquiries
- Update inquiries
- Product management APIs
- Image upload APIs
- Future authentication APIs
Technology:
- AWS Lambda
- API Gateway
- DynamoDB
- S3
Shared TypeScript models used by both frontend and backend.
Examples:
- Inquiry
- Product
- Category
- Room
Purpose:
- Single source of truth
- Consistent typing across services
┌─────────────────┐
│ Public Website │
│ (SvelteKit) │
└────────┬────────┘
│
│ Reads
▼
┌──────────────────┐
│ CloudFront │
└────────┬─────────┘
│
┌────────────────────┴────────────────────┐
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ Content Bucket │ │ Images Bucket │
│ JSON Content │ │ Product Images │
└──────────────────┘ └──────────────────┘
▲
│
│ Managed By
│
┌──────────────────┐
│ Vinteeks CMS │
│ React Admin App │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ API Gateway │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ AWS Lambda │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ DynamoDB │
└──────────────────┘
Purpose:
- Products
- Categories
- Rooms
- Homepage content
- Images
Consumed by:
- Public website
- CMS application
Environment Variable:
VITE_CONTENT_BASE_URL=DynamoDB Table:
vinteeks-inquiries-prod
Stores:
- Customer inquiries
- Uploaded image keys
- Contact information
- Inquiry status
API Gateway
Current Routes:
GET /inquiries
PATCH /inquiries/{inquiryId}
POST /inquiries/upload-url
POST /contactPurpose:
- Reads inquiries from DynamoDB
Used By:
GET /inquiriesPurpose:
- Updates inquiry status
Used By:
PATCH /inquiries/{inquiryId}Purpose:
- Generates signed S3 upload URLs
Used By:
POST /inquiries/upload-urlClient:
cd client
npm installServer:
cd server
npm installCreate:
client/.env.local
Example:
VITE_CONTENT_BASE_URL=https://your-cloudfront-url.net
VITE_API_BASE_URL=https://your-api-id.execute-api.us-east-1.amazonaws.com- Product count
- Inquiry count
- View inquiries
- View inquiry details
- View uploaded photos
- Update inquiry status
Statuses:
- new
- reviewing
- quoted
- completed
- closed
- Create products
- Edit products
- Delete products
- Reorder products
- Featured products
- Sale products
- Homepage modules
- Hero sections
- CTA sections
- Product listings
- Upload images
- Delete images
- Organize assets
- Admin login
- Route protection
- Role-based permissions
Target:
- S3
- CloudFront
Build:
cd client
npm run buildTarget:
- AWS Lambda
- API Gateway
Deployment currently managed through AWS Console.
Completed:
- React CMS setup
- Shared TypeScript models
- Dashboard
- Inquiry listing
- Inquiry detail pages
- Inquiry image display
- Inquiry status updates
- DynamoDB integration
- Lambda integration
- API Gateway integration
Next Priority:
- Products CRUD
- Module editor
- Image manager
- Authentication
- Deployment automation