A comprehensive swimming timing application for swim clubs and coaches to track swimmer performance, record lap times, and analyze progress over time.
- User Authentication: Secure login system with admin and regular user roles
- Swimmer Management: Add, edit, and delete swimmer profiles
- Time Tracking: Record and track swim times with precision timing
- Lap Analysis: Break down performances by laps with detailed split times
- Performance History: View historical performance data for each swimmer
- Data Visualization: Analyze progress with performance charts
- Multi-Device Support: Responsive design works on desktop and mobile devices
- Dark/Light Mode: User-selectable theme preference
- Frontend: Next.js, React, Tailwind CSS, shadcn/ui components
- Authentication & Database: Firebase Authentication and Firestore
- State Management: React Context API
- Styling: Tailwind CSS with custom theming
- Deployment: Vercel (recommended)
- Node.js 16.8+ and npm/pnpm
- Firebase account and project
-
Clone the repository:
git clone https://github.com/your-username/swim-timer-pro.git cd swim-timer-pro -
Install dependencies:
pnpm install
-
Set up environment variables:
- Copy
.env.exampleto.env.local - Fill in your Firebase configuration details
- Copy
-
Set up Firebase:
- Create a Firebase project at https://console.firebase.google.com/
- Enable Authentication with Email/Password provider
- Create a Firestore database
- Deploy the Firestore security rules from
firestore.rules - Enable Storage for club logo uploads
-
Run the development server:
pnpm dev
-
Open http://localhost:3000 in your browser
- Create a Firebase project at https://console.firebase.google.com/
- Enable the following services:
- Authentication (Email/Password)
- Firestore Database
- Storage
- Get your Firebase configuration from Project Settings > General > Your Apps > SDK setup and configuration
- Add these values to your
.env.localfile
To create the first admin user:
- Start the application
- Register a new account
- In the Firebase console, go to Firestore and create a document in the
userscollection with:id: [user-auth-uid] email: [user-email] displayName: [name] isAdmin: true
- Login: Access the system with your credentials
- Add Swimmers: Create profiles for each swimmer
- Record Times: Use the timer to record swim sessions
- View History: Check historical performance data
- Manage Users: Admins can add and manage other users
The easiest way to deploy your Next.js app is to use the Vercel Platform.
- Push your code to a Git repository
- Import the project to Vercel
- Add your environment variables
- Deploy
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.