A full-stack time tracking application built with React and Go, designed for freelancers and remote workers to track their time, manage projects, and generate invoices.
- π€ User authentication with JWT
- β±οΈ Project-based time tracking with start/stop timer
- π Visual analytics (daily/weekly/monthly)
- π° Multiple hourly rates for different projects
- π Task management with categorization and tagging
- π Invoice generation with PDF export
- π± Responsive design for mobile and desktop
- React with TypeScript
- TailwindCSS for styling
- Shadcn UI components
- React Query for data fetching
- React Router for navigation
- Chart.js for visualizations
- jsPDF for invoice generation
- Go (Golang)
- Gin web framework
- GORM for database operations
- PostgreSQL database
- JWT for authentication
List Project | Add Project |
List Task | Add Task |
Detail Time Tracking by Task | Time Tracking Dashboard |
Analytics Daily, Weekly, and Monthly | Generate Report based Start Date and End Date |
PDF Report Invoice |
Before you begin, ensure you have installed:
- Node.js (v18 or later)
- Go (v1.19 or later)
- PostgreSQL (v12 or later)
- Navigate to the backend directory:
cd backend
- Install Go dependencies:
go mod tidy
- Create a
.env
file:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/timetracker?sslmode=disable
JWT_SECRET=your-secret-key
PORT=8080
- Create the database:
CREATE DATABASE timetracker;
- Run the server:
go run cmd/main.go
- Navigate to the frontend directory:
cd client
- Install dependencies:
npm install
- Create a
.env
file:
VITE_API_URL=http://localhost:8080/api
- Start the development server:
npm run dev
βββ backend/
β βββ cmd/
β β βββ main.go
β βββ internal/
β β βββ config/
β β βββ models/
β β βββ handlers/
β β βββ middleware/
β β βββ utils/
β βββ README.md
β
βββ client/
βββ src/
β βββ api/
β βββ components/
β βββ contexts/
β βββ features/
β βββ hooks/
β βββ lib/
βββ README.md
POST /api/auth/register
- Register new userPOST /api/auth/login
- Login user
GET /api/projects
- List all projectsPOST /api/projects
- Create new projectPUT /api/projects/:id
- Update projectDELETE /api/projects/:id
- Delete project
GET /api/time-entries
- List time entriesPOST /api/time-entries
- Create time entryPUT /api/time-entries/:id
- Update time entryDELETE /api/time-entries/:id
- Delete time entry
GET /api/tasks
- List tasksPOST /api/tasks
- Create taskPUT /api/tasks/:id
- Update taskDELETE /api/tasks/:id
- Delete task
GET /api/analytics/daily
- Get daily analyticsGET /api/analytics/weekly
- Get weekly analyticsGET /api/analytics/monthly
- Get monthly analytics
POST /api/invoices/generate
- Generate invoice
# Run server
go run cmd/main.go
# Run tests
go test ./...
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
- 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.
- Shadcn UI for the beautiful UI components
- Gin Web Framework for the Go web framework
- GORM for the ORM library