Between Freedom and Space backend monolith. Supports running in Docker. Available Grafana metrics. All configuration data and properties are in HOCON file.
The Project structure implies an easy division into microservices.
Root folders represents major features such as access
, auth
, profiles
etc.
There are some common modules such as common
and util
.
The service are easily expandable and high performance. The application is codded according to the most modern practices and using the best architecture patterns.
- Kotlin's frameworks and infrastructure:
- Ktor
- Exposed
- Build Gradle kts
- Koin
- Coroutines
- Gradle
- Supports Kotlin script
- Supports buildSrc
- Convenient work with dependencies and versions
- Docker
- Ability to run the application in any environment
- Easy integration into Kubernetes
- Microservices support
- All application features designed as separate modules.
- General logic moved to separate libraries
- Clean architecture
- The application is written according to the best practices of clean architecture
- All logical layers are separated into separate folders
- Each layer has its own API and data models
- Security and encryption
- We are not storing your sensitive personal data
- All traffic is encrypted
- We use modern encrypting algorithms to interact with API
- Simplicity
- All files with code is less than 350 lines
- Application is written by modern frameworks
- High performance
- Service is powered by lightweight Ktor
- Minimum data manipulation
- Maximum asynchronous interaction
- CI/CD
- Uses GitHub Actions to run tests and deploy
- Can easily deployed to any stage
For our developers and managers we use YouTrack as project management tool. So the common flow is:
- Checkout
develop
branch - Create a new branch with pattern:
feature/<TASK-NAME>
orbugfix/<TASK-NAME>
- Add feature code, write tests and check performance
- Commit changes with next description:
<TASK-NAME>: Your short description
- Make
git push
and create pull request todevelop
branch. Add some description. - Wait until reviewers approve
- Merge and deploy to testing stage.
Release flow:
- Checkout
develop
branch - Create a new branch with pattern:
release/v<VERSION>
- Create pull request to
main
branch - Wait until reviewers approve
- Deploy release to production stage and merge the pull request
Hotfix flow:
- Create a new branch with pattern:
hotfix/<TASK-NAME>
- Add code and commit changes
- Create pull request and wait approve
- Merge
If you want to add some functionality, and you are not in our team:
- Create a new branch from
develop
with pattern:contribution/<SHORT-DESCRIPTION>
- Add all code, write tests and check performance
- Commit changes with next description:
CONTRIBUTION: Your short description
- Make
git push
and create pull request todevelop
branch. Add complete description. - Wait until reviewers approve
- Pull request will be automatically merged
- Set up Docker on your machine and run
run.sh
- Use
gradle
to run the application manually. You can just open Application.kt file and click on green run icon. - Build java jar with gradle
package
task and runjava -jar mono-backend.jar
in terminal.