Table of Contents
-
About The Project
-
Getting Started
-
Usage
- Roadmap
- Images
- License
- Contact
About The Project
The FreeRoam Hiking Companion Application is a personal development project aimed at enhancing my skills in AngularJS and Java Spring Microservices, while merging my passion for hiking with technology. This application is designed to serve as a comprehensive hiking trip planner where users can explore various hiking-related points of interest such as peaks, summits, and trails. Users can access detailed information, download route GPX files, and personalize their experience by creating an account to favorite locations and upload their own trail data. This project is currently in the initial phases of development, designed with scalability in mind to continuously integrate additional features and new technologies. The aim is to create an extendable platform that not only supports my learning objectives but also enhances the hiking community's access to valuable content.
Repositories & Tech Stack
The architecture of the project leverages a microservices approach, incorporating several key components:
Main Project Repository
Angular Client
- The client application with a dynamic map system, that allows users to explore trails and summits on open-source maps.
- Repository: freeroam-frontend-angular
- Technologies used:
Keycloak Authorization Server:
- An open source authorization server utilized to handle secure user authentication via OpenID Connect, manage service-to-service communication through OAuth2, and provide a dashboard for efficient administration of users, roles, and permissions.
- Repository: freeroam-keycloak
- Technologies used:
Eureka Discovery Service:
- Manages service registration and discovery, enabling dynamic interaction between the microservices.
- Repository: freeroam-eureka
- Technology used:
Reactive Spring Gateway:
- Acts as an intelligent router that directs incoming API requests to the appropriate backend services, facilitating a responsive user experience.
- Repository: freeroam-gateway
- Technology used:
Summits Service:
- Collects and manages data related to summits and peaks, offering access to extensive geographical and hiking trail information.
- Repository: freeroam-summits
Trails Service:
- Focuses on managing trail routes, first the ones collected from open APIs, then later on in development also the user-uploaded ones.
- Repository: freeram-trails
Programming Languages
Security
Database, ORM
Integration and Deployment
Getting Started
Prerequisites
Setup & Run
- Copy
env.txt
to .env
and fill in the necessary environment variables.
- Run
docker-compose up -d
in the root directory.
- Access the Keycloak admin console at
http://localhost:8080
with the credentials admin/admin
.
- Create scopes:
- Create a new scope with the name
summits_read
- Create a new scope with the name
summits_write
- Create a new scope with the name
trails_read
- Create a new scope with the name
trails_write
- Create a new client with the client ID
freeroam_frontend
- Set the root URL
http://localhost:4200
.
- Set the client type to public
- Create a new client with the client ID
freeroam_gateway
- Set the root URL
http://localhost:8080
.
- Set the client type to confidential
- Create a new client with the client ID
freeroam_gateway_s2s
- Set the root URL
http://localhost:8080
.
- Set the client type to confidential
- Add the scopes
summits_read
, summits_write
, trails_read
, trails_write
to the clients.
- The application is will be accessible at
http://localhost:4200
Roadmap
- See the Project Board for the state of the project, a list of planned features and issues in all related project repositories.
License
Distributed under the MIT License. See LICENSE
for more information.
Images
Contact
Dániel Nádas
Project
Link: https://github.com/DNadas98/freeroam-hiking-companion