A modern full-stack e-commerce solution designed for artisanal cheese producers, delivering a digital shopping experience from product discovery to order fulfillment.
Fromageria Tesilli is an artisan cheese factory located in Belo Horizonte, Brazil. The Fromageria produces cured artisanal cheeses carefully crafted, combining delicious ingredients with creativity.
- Product Catalog: Browse curated artisanal cheese selections with detailed descriptions
- Shopping Cart: Add products with customizable sizes and quantities
- Responsive Design: Mobile-first approach optimized for all devices
- Secure Checkout: Complete order process with customer information collection
- Product Management: Create, edit, and delete products
- Order Management: View and track customer orders
- User Authentication: Secure admin login with JWT tokens
- Email Notifications: Automated order confirmation emails
- RESTful API: Clean, documented endpoints for all operations
- Database Management: Robust data modeling with relationships
- Image Optimization: Efficient cheese photography display
- Error Handling: Comprehensive error management and logging
- React 18 - Modern JavaScript library for building user interfaces
- Material-UI (MUI) - React component library for consistent design
- Vite - Fast build tool and development server
- React Router - Client-side routing for single-page application
- React Context - State management for sharing data across components
- Axios - HTTP client for API communication
- Node.js - JavaScript runtime environment
- Express.js - Web application framework
- Sequelize ORM - Database object-relational mapping
- JWT - JSON Web Tokens for authentication
- bcrypt - Password hashing for security
- Nodemailer - Email sending functionality
- MySQL - Relational database management system
- Railway - Database hosting platform
- Vercel - Serverless deployment platform
- Git - Version control system
- Node.js (v16 or higher)
- npm or yarn package manager
- MySQL database
- Git
-
Clone the repository
git clone https://github.com/isacaputo/fromageria-tesilli.git cd fromageria-tesilli -
Install server dependencies
cd server npm install -
Install client dependencies
cd ../client npm install
Create a .env file in the server directory:
DATABASE_URL=mysql://username:password@host:port/database_name
SUPER_SECRET=your_jwt_secret_key
NODE_ENV=developmentCreate a .env file in the client directory:
VITE_API_BASE_URL=http://localhost:4000-
Run migrations
cd server npx sequelize-cli db:migrate -
Seed the database
npx sequelize-cli db:seed:all
-
Start the server
cd server npm run dev -
Start the client
cd client npm run dev
The application will be available at:
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:4000
-
Build the client
cd client npm run build -
Start production server
cd server npm start
GET /api/products- Get all productsGET /api/products?id={id}- Get product by IDPOST /api/products/create- Create new product (admin only)DELETE /api/products?id={id}- Delete product (admin only)
POST /api/auth/login- User loginPOST /api/auth/register- User registration
POST /api/orders- Create new orderGET /api/orders- Get all orders (admin only)
The project features a well-organized and centralized database with 20 products portfolio and manages relationships between customers, orders, and products.
- Products - Cheese product information with descriptions, prices, and categories
- Orders - Customer order records with contact and delivery information
- Auth - User authentication data for admin access
- OrderHasProduct - Many-to-many relationship table linking orders and products
- Client: https://fromageria-tesilli-client.vercel.app
- Server API: https://fromageria-tesilli-server.vercel.app
-
Deploy Server
cd server vercel --prod -
Deploy Client
cd client vercel --prod
Configure the following in your Vercel dashboard:
Server:
DATABASE_URLSUPER_SECRET
Client:
VITE_API_BASE_URL
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Follow the Fromageria on Instagram
- Fromageria Tesilli for the inspiration and product data
- Material-UI team for the excellent component library
- Vercel team for the seamless deployment experience
- The open-source community for the amazing tools and libraries
Developed with β€οΈ by Isadora Caputo

