2026-05-11 19:00:02 +02:00
2026-05-09 11:00:21 +02:00
2026-05-09 11:00:21 +02:00
2026-05-11 19:00:02 +02:00
2026-05-10 21:19:39 +02:00
2026-05-10 21:19:39 +02:00

TimeToLeave

TimeToLeave Logo

TimeToLeave is a comprehensive time-off management application designed to streamline vacation, sick leave, and work-from-home request handling for both employees and administrators. This tool helps organizations improve transparency and ensure compliance with internal policies.

GitHub release (latest by date) GitHub issues GitHub stars GitHub license

🚀 Getting Started

These instructions will get you a copy of the project running on your local machine for development and testing purposes.

Prerequisites

  • Node.js (version 20.x or higher recommended)
  • npm/yarn (version 9.x or higher recommended)

Installation

  1. Clone the repository:

    git clone https://github.com/fegger/TimeToLeave.git
    cd TimeToLeave
    
  2. Install dependencies:

    npm install
    
  3. Environment variables:

    • For apps/web and apps/mobile, copy .env.example to .env in each app directory and update the values as needed.

🧱 Project Structure Overview

This project uses a monorepo setup to manage multiple, interconnected parts:

  • apps/: Contains the primary deployable applications.
    • apps/web: The main web interface for the user, built using Next.js, React, and Tailwind CSS.
    • apps/mobile: The mobile application client built using React Native and Expo.
  • packages/: Contains reusable, domain-specific logic and shared utilities.
    • packages/core: Core business logic, domain models, and utilities like date manipulation using date-fns.
    • packages/api-client: Handles interactions with the backend API, including authentication, request submissions, and calendar integration.

🛠 Development & Running the Application

The package.json defines several scripts to assist with development:

Script Command Description
dev npm run dev -w apps/web Starts the development server for the Web application.
dev:mobile npm run start -w apps/mobile Starts the mobile client development server.
build npm run build -w apps/web Builds the production bundle for the Web application.
test npm run test -w apps/web Runs unit and integration tests for the Web application.
lint npm run lint -w apps/web && npm run lint -w apps/mobile Runs linting checks across both web and mobile clients.

Development Workflow Tip

When working on shared logic, modify files in packages/core or packages/api-client. Remember to run tests or restart the services to ensure changes are propagated correctly across the consuming apps.

📝 Web Application Overview

The web application is built with the following technologies:

  • Framework: Next.js (version 16.2.6)
  • UI Library: React (version 19.2.4)
  • Styling: Tailwind CSS (version 4)
  • Date Manipulation: date-fns (version 4.1.0)
  • iCalendar Parsing: node-ical (version 0.26.1)

Key Features of the Web Client

  • Dashboard for requesting and managing time off
  • Real-time updates on approval status
  • Integration with personal calendars via iCalendar

📱 Mobile Application Overview

The mobile application leverages the following technologies:

  • Framework: React Native (version 0.81.5) via Expo (version 54.0.33)
  • Navigation: React Navigation (version 7.2.4)
  • Data Persistence: AsyncStorage (version 3.0.2)
  • Device APIs: Expo modules for calendar, location, and notifications

Key Features of the Mobile Client

  • Geolocation-based request policies
  • Calendar event integration
  • Native push notifications for status updates

🛡️ Testing & Quality Assurance

The project provides comprehensive scripts for maintaining code quality:

  • Linting: Use npm run lint to catch stylistic and structural errors.
  • Type Checking: Use npm run typecheck to ensure type safety across the codebase.
  • Testing:
    • The web application uses Vitest (version 4.1.5) for unit and integration tests.
    • The mobile application uses Jest (version 29.7.0) for testing React Native components.

📄 API Documentation

The API client handles all interactions with the backend. The main features include:

  • Authentication: Secure token management
  • Request Management: Submitting and updating time-off requests
  • Calendar Integration: Reading and writing calendar events
  • Policy Checking: Validating requests against organizational rules

To use the API client, import it into your project:

import { createApiClient } from "@timetoleave/api-client";

const apiClient = createApiClient("YOUR_BACKEND_API_URL");

Detailed API documentation will be available once the backend services are finalized.

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md for more information.

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

📂 File Structure

├── apps/
│   ├── mobile/         # Mobile application using React Native and Expo
│   └── web/             # Web application using Next.js
├── packages/
│   ├── api-client/     # API client utilities
│   └── core/            # Shared core utilities and types
├── node_modules/       # Third-party dependencies
└── README.md           # The file you're reading now

This README was generated based on the detected monorepo structure and dependencies.

S
Description
No description provided
Readme 35 MiB
Languages
TypeScript 96.5%
JavaScript 1.1%
Kotlin 0.7%
CSS 0.7%
Ruby 0.4%
Other 0.6%