This project is a fully responsive fullstack web application for managing a fitness studio. It provides features for user interaction, data management, and localization, utilizing modern technologies for both the front-end and back-end development.
- Secure Authentication: JWT-based authentication for secure user login and session management.
- Password Recovery: Secure password reset via email or OTP verification.
- Role-Based Access Control (RBAC): • Clients can book training sessions based on studio rules and available subscriptions. • Trainers manage their schedules and assigned training sessions. • Admins oversee user management, training schedules, and subscription plans.
- Dashboard Analytics: Admins and trainers get insights into bookings, and revenue.
- UI: Responsive design for mobile, tablet and desktop devices.
- Multi-language support: (Uk, En).
- Data persistence: MongoDB integration via Mongoose.
- Typescript: For code type safety.
- React: For building dynamic user interfaces.
- Custom React Hooks: For better readability and logic reuse.
- Redux & Redux Toolkit: For state management.
- Async Thunks: For handling asynchronous operations.
- React Router v6: For routing and navigation.
- Localization: Managed using
react-i18next
. - Styling: Combination of SCSS and Tailwind CSS for flexible and modern UI design.
- Typescript: For code type safety.
- Express: Lightweight framework for building the server-side application.
- Routes, Controllers, and Services: For organizing server-side code.
- MongoDB & Mongoose: For database operations and schema modeling.
- Nodemailer: For sending mails.
- Node.js (>= 16.x)
- npm or yarn
- MongoDB (Ensure it is installed and running)
-
Clone the repository:
git clone https://github.com/vbuldenko/Intensity-app.git cd Intensity-app
-
Install dependencies:
- Front-end dependencies:
cd frontend npm install
- Back-end dependencies:
cd backend npm install
- Front-end dependencies:
-
Configure environment variables:
-
Rename the
.env.example
file to.env
in both thebackend
andfrontend
. -
Add the following variables to backend:
NODE_ENV=development PORT=3001 CLIENT_HOST=https://your-production-client-url.com MONGODB_URI=mongodb+srv://<username>:<password>@<cluster-url>/<database>?retryWrites=true&w=majority DEV_MONGODB_URI=mongodb+srv://<username>:<password>@<cluster-url>/<database>?retryWrites=true&w=majority SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=[email protected] SMTP_PASSWORD=your-email-password JWT_KEY=your-jwt-key JWT_REFRESH_KEY=your-jwt-refresh-key JWT_ACCESS_SECRET=your-jwt-access-secret JWT_REFRESH_SECRET=your-jwt-refresh-secret GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret
-
Add the following variable to frontend:
VITE_API_BASE_URL=https://your-production-server-url.com
-
-
Run the application:
- Start both front-end and back-end development servers from root directory:
npm run dev
- Start both front-end and back-end development servers from root directory:
-
Access the application: Open your browser and navigate to http://localhost:5173.
This project is licensed under the MIT License. Copyright (c) 2025 Vladyslav Buldenko.