mirror of
https://github.com/dedicatedcode/reitti.git
synced 2026-01-09 09:27:58 -05:00
9034562fe0ee2e8ec468c302789a849d7db3c178
Reitti
Reitti is a personal location tracking and analysis application that helps you understand your movement patterns and significant places. The name "Reitti" comes from Finnish, meaning "route" or "path".
Features
- Location Tracking: Import and process GPS data from various sources including GPX files
- Visit Detection: Automatically identify places where you spend time
- Trip Analysis: Track your movements between locations
- Significant Places: Recognize and categorize frequently visited locations
- Timeline View: See your day organized as visits and trips
- Privacy-Focused: Self-hosted solution that keeps your location data private
- Asynchronous Processing: Handle large datasets efficiently with RabbitMQ-based processing
Getting Started
Prerequisites
- Java 24 or higher
- Maven 3.6 or higher
- Docker and Docker Compose
- PostgreSQL database with spatial extensions
- RabbitMQ for message processing
Running the Application
-
Clone the repository
git clone https://github.com/dedicatedcode/reitti.git cd reitti -
Start the infrastructure services
docker-compose up -d -
Build and run the application
mvn spring-boot:run -
Access the application at
http://localhost:8080
Building Docker Image
# Build the application
mvn clean package
# Build the Docker image
docker build -t reitti/reitti:latest .
Docker
This repository contains Docker images for the Reitti application.
Usage
# Pull the image
docker pull reitti/reitti:latest
# Run with PostgreSQL and RabbitMQ using docker-compose
docker-compose up -d
# Or run standalone with environment variables
docker run -p 8080:8080 \
-e POSTGIS_HOST=postgres \
-e POSTGIS_PORT=5432 \
-e POSTGIS_DB=reittidb \
-e POSTGIS_USER=reitti \
-e POSTGIS_PASSWORD=reitti \
-e RABBITMQ_HOST=rabbitmq \
reitti/reitti:latest
Environment Variables
| Variable | Description | Default |
|---|---|---|
POSTGIS_HOST |
PostgreSQL database host | postgis |
POSTGIS_PORT |
PostgreSQL database port | 5432 |
POSTGIS_DB |
PostgreSQL database name | reittidb |
POSTGIS_USER |
Database username | reitti |
POSTGIS_PASSWORD |
Database password | reitti |
RABBITMQ_HOST |
RabbitMQ host | rabbitmq |
RABBITMQ_PORT |
RabbitMQ port | 5672 |
RABBITMQ_USER |
RabbitMQ username | reitti |
RABBITMQ_PASSWORD |
RabbitMQ password | reitti |
SERVER_PORT |
Application server port | 8080 |
APP_UID |
User ID to run the application as | 1000 |
APP_GID |
Group ID to run the application as | 1000 |
JAVA_OPTS |
JVM options |
Tags
latest- Latest stable releasex.y.z- Specific version releases
Data Flow
- Location data is imported via API or web interface
- Data is queued in RabbitMQ for asynchronous processing
- Processing workers analyze the data to detect visits and trips
- Results are stored in PostgreSQL database
- Web interface displays the processed data as timeline and maps
Technologies
- Backend: Spring Boot, Spring Data JPA, Spring Security
- Database: PostgreSQL with spatial extensions
- Message Queue: RabbitMQ for asynchronous processing
- Frontend: Thymeleaf, JavaScript
- Testing: JUnit 5, Testcontainers
- Containerization: Docker
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Languages
Java
63.1%
HTML
21.3%
JavaScript
9.4%
CSS
5.9%
Shell
0.2%
Other
0.1%