HEMA Tracker is a web application for tracking Historical European Martial Arts (HEMA) training sessions. Built with React and Vite, it allows users to log, view, and manage their training sessions, including details like weapon type, training focus, intensity, and notes.
- User authentication (login/register)
- Dashboard with training stats (total sessions, hours trained, average intensity)
- Add, edit, and delete training sessions
- Track session details: title, date, duration, weapon type, training type, intensity, focus areas, and notes
- Responsive, modern UI with card-based session display
- Node.js (v16 or higher recommended)
- npm (comes with Node.js)
- Clone the repository:
git clone git@github.com:KingVitaman/HEMA-tracker.git cd HEMA-tracker
- Install dependencies:
npm install
- Start the development server:
npm run dev
- The app will be available at [http://localhost:5173]
- The app uses a mock API with a
database.json
file in theapi/
directory. - You can use json-server to serve this file:
npm install -g json-server json-server --watch api/database.json --port 8088
- The frontend expects the API at
http://localhost:8088
.
HEMA-tracker/
├── api/ # Mock database (JSON)
├── src/
│ ├── components/ # React components (auth, dashboard, nav, sessions)
│ ├── services/ # API service modules
│ ├── App.jsx # Main app component
├── package.json
└── README.md
- Styles are organized by component (e.g.,
Session.css
,Dashboard.css
). - The app uses CSS modules for scoped, maintainable styles.
- Button and card styles are consistent across the app for a modern look.
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.