GrindVibe is a modern Full-Stack web application designed for people who want full control over their workouts. The platform allows you to plan training routines, track workout sessions, and discover new activities using integration with an external exercise API.
The project is built with high performance, responsiveness, and a great user experience in mind, combining the power of the latest React 19, the powerful Tailwind CSS v4 framework, and a solid, efficient backend created in .NET 9 C#.
🚧 Work in Progress: Please note that GrindVibe is currently in active development. There are still many possibilities and features that will be implemented in the future! The goal is to provide a complete workout environment where users can execute training sessions, share progress, and browse workouts from other members.
- 🛡️ Authentication & Authorization: Secure login via Google OAuth and authorization system using JWT Bearer Tokens. Powered by .NET Identity.
- 🏋️ Workout & Routine Management: Create and manage complete workout sessions and routines.
- 🔍 Exercise Exploration: Integrated with ExerciseDB API allowing you to explore and import thousands of exercises.
- 🗃️ Global State Management: Uses React Redux (RTK) for seamless client-side logic management.
- 🎨 Modern User Interface: Elegant design utilizing Radix UI and framer-motion for smooth animations and full accessibility (a11y). Dark/Light theme support via
next-themes.
As the project is continually expanding, here's a glimpse of what's coming next:
- Active Workout Execution: A dedicated mode for tracking live exercises, sets, reps, and rest timers.
- Social Features: Browse and import workout plans created by other users from the community.
- Progress Tracking & Analytics: Visual charts and statistics of your workout progress over time.
- Advanced Filtering: Better search mechanisms for exercises and routines.
The application's architecture is divided into two main modules:
- Core: React 19, TypeScript, React Router DOM v7
- Build Tool: Vite
- Styling & UI: Tailwind CSS v4, Radix UI Primitives, Lucide Icons
- Animations: Framer Motion
- State Management & HTTP: Redux Toolkit, Axios
- Data Validation: Zod
- Client-side Auth:
@react-oauth/google
- Core: .NET 9.0 Web API (C#)
- Database & ORM: SQLite + Entity Framework Core 9.0
- Auth & Identity: ASP.NET Core Identity, JWT (JSON Web Tokens), Google APIs Auth
- API Documentation: Swagger / OpenAPI
- Security & Config: DotNetEnv for environment variables management, CORS policies configuration.
- Node.js (LTS recommended)
- .NET SDK 9.0
- NPM package manager
git clone https://github.com/YourUsername/grindvibe.git
cd grindvibe- Navigate to the backend directory:
cd grindvibe-backend - Configure environment variables:
Create a
.envfile and/or adjustappsettings.json, making sure keys likeJwt:Key,Jwt:Issuer,Jwt:Audience, andGoogleAuth:ClientIdare provided. - Apply database migrations:
dotnet ef database update
- Run the application:
Swagger UI will be available at e.g.,
dotnet run
http://localhost:5000/swagger.
- Open a new terminal, return to the root directory, and navigate to the frontend:
cd grindvibe-frontend - Install project dependencies:
npm install
- Start the Vite development server:
The application will be available at the address shown in the console (usually
npm run dev
http://localhost:5173).
Here are some glimpses of the application:


