Zeity is a modern, full-stack time tracking application built with Nuxt 4 and focused on delivering an exceptional user experience. It provides comprehensive time tracking, project management, organization management, and team collaboration features.
- β±οΈ Time Tracking: Manual and automatic time tracking with project association
- π’ Organization Management: Multi-organization support with role-based access control
- π₯ Team Collaboration: Team management and member invitations
- π Project Management: Create and manage projects with status tracking
- π€ Data Export: Export time entries to CSV and XLSX formats
- π Authentication: Passkeys and OAuth
- π i18n Support: Multi-language support
- π± PWA Ready: Progressive Web App with offline capabilities
- π¨ Modern UI: Built with Nuxt UI for a polished user experience
Zeity is a monorepo built with the following structure:
- apps/zeity: Main application (Nuxt 4)
- apps/docs: Documentation site
- libs/database: Drizzle ORM schema and database utilities
- libs/types: Shared TypeScript type definitions
- libs/utils: Shared utility functions
- Framework: Nuxt 4 (Vue 3, TypeScript)
- Database: PostgreSQL with Drizzle ORM
- Authentication: nuxt-auth-utils
- UI: Nuxt UI (Tailwind CSS)
- State Management: Pinia
- i18n: @nuxtjs/i18n
- Security: nuxt-security
- PWA: @vite-pwa/nuxt
- Testing: Vitest
- Package Manager: pnpm
- Node.js 24+
- pnpm
- PostgreSQL 16+
- Docker and Docker Compose (optional)
-
Clone the repository:
git clone https://github.com/zeity-dev/zeity.git cd zeity -
Install dependencies:
pnpm install
-
Configure environment variables: Copy the example environment file and configure it:
cp apps/zeity/.env.example apps/zeity/.env
See Environment Variables section below.
-
Run database migrations:
pnpm --filter ./apps/zeity run db:migrate
Development mode:
pnpm dev # Start all apps
pnpm start:zeity # Start only the main app
pnpm start:docs # Start only the docsProduction build:
pnpm buildpnpm lint # Lint all projects
pnpm test # Run testsZeity can be run using the official Docker image.
The provided docker-compose.yml is preconfigured to use the image ghcr.io/zeity-dev/zeity-edge:main.
Start the application:
docker compose up -dStop the application:
docker compose downView logs:
docker compose logs -fOnce the application is running, access it at http://localhost:3000.
cd apps/zeity
docker build -t zeity:custom .# Database Configuration
ZEITY_DATABASE_URL=postgresql://user:password@localhost:5432/zeity
# Security (IMPORTANT: Use strong, random values in production)
ZEITY_SESSION_PASSWORD=<32-character-random-string>
ZEITY_JWT_SECRET=<random-secret-string>
# Mailer Configuration
ZEITY_MAILER_SMTP_HOST=smtp.example.com
ZEITY_MAILER_SMTP_PORT=587
ZEITY_MAILER_SMTP_USER=[email protected]
ZEITY_MAILER_SMTP_PASSWORD=your-smtp-password
ZEITY_MAILER_FROM_EMAIL=[email protected]
ZEITY_MAILER_FROM_NAME=Zeity
# S3 Configuration (for file uploads)
ZEITY_S3_END_POINT=https://your-s3-endpoint.com
ZEITY_S3_ACCESS_KEY=your-access-key
ZEITY_S3_SECRET_KEY=your-secret-key
ZEITY_S3_BUCKET=zeity-uploads
ZEITY_S3_REGION=auto# Google OAuth
ZEITY_OAUTH_GOOGLE_CLIENT_ID=your-google-client-id
ZEITY_OAUTH_GOOGLE_CLIENT_SECRET=your-google-client-secret
# Apple OAuth
ZEITY_OAUTH_APPLE_CLIENT_ID=your-apple-client-id
ZEITY_OAUTH_APPLE_CLIENT_SECRET=your-apple-client-secret
# Microsoft OAuth
ZEITY_OAUTH_MICROSOFT_CLIENT_ID=your-microsoft-client-id
ZEITY_OAUTH_MICROSOFT_CLIENT_SECRET=your-microsoft-client-secret# Feature Flags
ZEITY_ALLOW_ORGANISATION_CREATE=true # Allow users to create organizations- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add 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.
- Built with Nuxt 4
- UI components from Nuxt UI
- Database management with Drizzle ORM