A fully functional, professional e-commerce application built with a Flutter frontend, Node.js/Express backend, and a MySQL database. This project includes user authentication, shopping carts, order tracking, and profile management.
Here is a showcase of the application's user interface:
- User Authentication: Secure Login/Register flows with JWT integration.
- Dynamic Shopping Cart: Effortlessly add, remove, and manage products.
- Product Discovery: Browse items, search for specific products, and filter your favorite choices.
- Order Management: Real-time order processing and status tracking.
- Profile Management: Profile picture upload (via Cloudinary) and editable user details.
- Cross-Platform Support: Renderable dynamically on iOS and Android devices.
├── E-commerce/ # UI Gallery Screenshots
├── backend/ # Node.js + Express + MySQL Server
│ ├── controllers/ # API Logic & Database interactions
│ ├── lib/ # Database connection handling
│ ├── middleware/ # JWT and other express middleware
│ ├── routes/ # Express routing
│ └── index.js # Entry point for the server
└── frontend/ # Flutter Application
├── lib/
│ ├── screens/ # Application UI views (Cart, Home, Profile, etc.)
│ ├── services/ # Integration logic with backend REST API
│ └── main.dart # Flutter entry point
- Ensure your local MySQL server is running.
- Create a new database in MySQL:
CREATE DATABASE db4pm;
- Navigate to the backend folder:
cd backend - Install dependencies:
npm install
- Create your environment variables:
Copy
.env.exampleinto a new.envfile and fill in your secrets.Where to put API Keys: Opencp .env.example .env
.env. This is where your JWT Secret and Cloudinary Keys should be configured securely. Make sure never to push.envto GitHub (it is excluded via.gitignore). - Run the server:
npm start # or node index.js
-
Navigate to the frontend folder:
cd frontend -
Install packages:
flutter pub get
-
Configure API Base URL: Open the services folder (
frontend/lib/services/). For each service file (ex:auth_service.dart,shop_service.dart, etc.), verify thatbaseUrlcorresponds to your local IP Address. Example:static const String baseUrl = '(YourLocalIP):5000';
Change the IP to match your local Wi-Fi router IP (which usually hosts the backend Node.js server) if deploying on a physical device, or use
10.0.2.2if testing via Android Emulator. -
Run the application:
flutter run







