A full-stack web application for tracking training activities, setting targets, visualizing progress, and managing events.
This application was inspired by Jason Gilmore's article "10,000 Pushups And Other Silly Exercise Quests That Changed My Life", available at https://wjgilmore.com/articles/10000-pushups.
- User Authentication: Secure registration and login with email and password.
- Activity Tracking: Register various training activities (e.g., Push-ups, Sit-ups).
- Event Logging: Log repetitions for activities with timestamps.
- Target Counts: Set and track target repetition counts for each activity.
- Progress Visualization: Interactive charts (volume over time, time of day patterns) for selected activities.
- Event Management: View, edit, and delete past training events.
- Data Export: Export all training data to CSV format.
- Multi-language Support: English, Norwegian, and Spanish.
- Theme Switching: Dark and Light mode.
- Responsive Design: Works well on both mobile and desktop.
The dashboard view of the Fremgang application, showcasing the user interface for tracking activities, logging events, and visualizing progress with interactive charts.
- Frontend: Svelte, SvelteKit, TypeScript, Chart.js, i18next
- Backend: Node.js, Express.js, SQLite3, bcrypt, jsonwebtoken
Follow these steps to set up and run the project locally.
- Node.js (LTS version recommended)
- npm (Node Package Manager)
-
Clone the repository:
git clone <repository-url> cd fremgang-wip-maal
-
Install Dependencies:
npm install
This will install the dependencies for the root, server, and client-svelte projects.
To create a production-ready build of the application:
- Navigate to the root of the project.
- Run the build script:
This command will:
npm run build
- Create an optimized static build of the Svelte frontend in the
client-svelte/builddirectory. - Compile the TypeScript backend code into JavaScript in the
server/distdirectory.
- Create an optimized static build of the Svelte frontend in the
For a development environment with live reloading for both the frontend and backend:
- Navigate to the root of the project.
- Run the development start script:
This will start the Svelte development server and the Node.js server simultaneously. The application will be accessible at
npm run start:dev
http://localhost:5173.
After building the application (see "Building for Production"), you can run the production version:
- Navigate to the root of the project.
- Start the server:
This will start the Node.js server, which will serve the optimized frontend build. The application will be accessible at
npm start
http://localhost:3010(or the port specified inserver/src/index.ts).
To change a user's password via the command line:
- Navigate to the
serverdirectory. - Run:
(e.g.,
npm run change-password -- <user-email> <new-password>
npm run change-password -- user@example.com newSecurePass123)
