Time Management
A comprehensive time management app with a web frontend, mobile app, and backend API. Frontend: Vue.js 3, Vuetify, Pinia, Vite, Tailwind CSS, Axios, Chart.js. Mobile: Expo, React Native, React Navigation, Axios, Tailwind CSS. Backend: Elixir, Phoenix, Ecto, PostgreSQL, Guardian. Deployment: Docker, Docker Compose, Nginx, Expo, GCP.
Time Manager

Description
Time Manager is a powerful tool designed to manage working times and user clocks. It provides a structured API backend using Elixir and Phoenix, along with a Vue.js-powered frontend for seamless user experience.
The application uses:
- Backend: Elixir and Phoenix Framework
- Frontend: Vue.js 3
- Database: PostgreSQL
Features
- User and Clock management
- Working time tracking
- JWT-based authentication
- CI/CD pipelines integrated with Docker and GitHub Actions
- PostgreSQL database with relational mappings
- Vue.js frontend with a responsive UI
Architecture
The system is composed of:
- Backend Service: Provides RESTful APIs built in Elixir using the Phoenix Framework.
- Frontend Service: A Vue.js application served with Nginx.
- Database: PostgreSQL for relational data storage.
Installation
Prerequisites
- Docker
- Docker Compose
- PostgreSQL
Steps to Run Locally
Clone the repository:
git clone [email protected]:xRezio/LIL10-time-manager-CI.git
cd LIL10-time-manager-CI
Setup environment variables:
Create a .env file based on .env.example and fill in the necessary environment variables.
Build and run the services using Docker Compose:
docker-compose --profile dev up -d --build
Run migrations (for the backend service):
docker-compose exec app mix ecto.create
docker-compose exec app mix ecto.migrate
Access the application:
CI/CD Pipeline
This project is configured to automatically build and deploy via GitHub Actions and Docker Hub.
- Build & Push Images: Every push to
main
triggers a GitHub Action that builds and pushes Docker images for both backend and frontend.
- Deployment: After a successful build, the app is deployed using Docker Compose on a Google Cloud VM.