https://github.com/nramc/journey-api
This Java-based Backend For Frontend (BFF) service is designed to seamlessly integrate with the Journeys Single Page Application (SPA), offering robust backend support for frontend operations.
https://github.com/nramc/journey-api
fortheloveofcode geojson java journey mongodb-atlas open-rewrite renovate-enabled rest-api spring-boot
Last synced: about 2 months ago
JSON representation
This Java-based Backend For Frontend (BFF) service is designed to seamlessly integrate with the Journeys Single Page Application (SPA), offering robust backend support for frontend operations.
- Host: GitHub
- URL: https://github.com/nramc/journey-api
- Owner: nramc
- Created: 2024-03-07T20:20:28.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2026-01-30T13:28:02.000Z (3 months ago)
- Last Synced: 2026-01-31T04:16:35.041Z (3 months ago)
- Topics: fortheloveofcode, geojson, java, journey, mongodb-atlas, open-rewrite, renovate-enabled, rest-api, spring-boot
- Language: Java
- Homepage: https://journey-api.codewithram.dev
- Size: 2.23 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

[](https://sonarcloud.io/summary/new_code?id=nramc_journey-api)
[](https://sonarcloud.io/summary/new_code?id=nramc_journey-api)
[](https://github.com/nramc/journey-api/releases)
[](https://journey-api.codewithram.dev/doc/swagger-ui.html)
[](https://hub.docker.com/r/codewithram/journey-api)
[](https://www.linkedin.com/in/ramachandran-nellaiyappan/)
# Journey Rest API
This **Java-based Backend For Frontend (BFF)** service is designed to seamlessly integrate with
the [Journeys](https://journey.codewithram.dev) Single Page
Application (SPA), offering robust backend support for frontend operations.
Built using the powerful [Spring Framework](https://spring.io/), this service handles complex request processing with a
focus on geographical data management. Key features include:
- Scalable Data Persistence: Leveraging [MongoDB Atlas](https://www.mongodb.com/products/platform/atlas-database), the
service ensures reliable and scalable data storage.
- Geospatial Support: With geographical information at its core, the service
utilizes [GeoJSON](https://datatracker.ietf.org/doc/html/rfc7946) data format, made simple
through the [Commons GeoJson](https://github.com/nramc/commons) library, for accurate and efficient handling of
location-based data.
## Helpful Links
- [Journeys Application](https://journey.codewithram.dev)
- [REST API Documentation](https://journey-api.codewithram.dev/doc/swagger-ui.html)
- [REST Open API YML Configuration](https://journey-api.codewithram.dev/doc/openapi)
## Getting Started
Please find below steps to setup and run application in your workstation.
### Prerequisites
The service uses MongoDB for persistence.
For Local development, Local MongoDB instance created with help of Docker CLI.
So make sure you have installed Docker CLI or any other docker container tool.
### Installation
1. Download Repository
```sh
git clone https://github.com/nramc/journey-api.git
```
2. Run Application with spring profile `dev`
```sh
mvn spring-boot:run -Dspring-boot.run.profiles=dev
```
3. Local MongoDB can be accessed in [http://localhost:9090/](http://localhost:9090/) with help
of [Mongo Express](https://github.com/mongo-express/mongo-express)
4. To test REST resource,
use [IntelJ Http Client](https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html) scripts
available in ``src/test/resources/http-scripts/`` directory.
### Contributing
Any contributions you make are **greatly appreciated**.
If you like the project and have a suggestion that would make this better, please fork the repo and create a pull
request.
You can also simply open an issue with the tag "enhancement".
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'feat: Add the AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
### Release new version
1. Manually
run [Prepare Release Workflow](https://github.com/nramc/journey-api/blob/main/.github/workflows/prepare-release.yml)
with release version "MAJOR.MINOR.PATCH" e.g. 0.0.1
2. The Workflow flow creates a new tag with provided release version vMAJOR.MINOR.PATCH e.g. v0.0.1
3. The Workflow creates [Release](https://github.com/nramc/journey-api/releases) as well with release notes and make the
release as latest
4. As soon as new `Release` created, which
triggers [Release Workflow](https://github.com/nramc/journey-api/blob/main/.github/workflows/release-workflow.yml)
with release event
5. The `Release` workflow build & test project after checkout
6. When build successful, creates Docker image and publish it to [Docker Hub](https://hub.docker.com/)
7. Finally triggers [Render](https://dashboard.render.com/) webhook for deployment
## Contact
[Ramachandran Nellaiyappan](https://myprofile.codewithram.dev/contact.html)
## Credits
Sincere Thanks to following open source community for their wonderful efforts to make our life much easier.
- [Spring IO](https://spring.io/) - Java Web Framework
- [MongoDB](https://www.mongodb.com/) - Persistence Layer
- [Spring Rest Doc](https://springdoc.org) - Spring REST Doc with Open API support for Swagger UI
- [OpenRewrite](https://docs.openrewrite.org/) - Automated source code refactoring
- [Docker](https://www.docker.com/) - Containerization
- [Testcontainers](https://testcontainers.com/) - Run containers on-demand for development and testing
## Show your support
Give a ⭐️ if you like this project!