Progee-API
November 7, 2022 ยท View on GitHub
Table of Contents
- Description
- Releases
- API docs
- Database relations map
- Frontend (Android client)
- Tech Stack
- Usage
- Contribution
- Licenses
- Contact Information
Description
Hi! This is Progee-API v1. Progee-API is a REST API for providing information about programming languages, and frameworks, their popularity, and respect for them among the community of developers (with reviews and scores). Currently working features: auth, languages, frameworks, reviews, dynamic roles with permissions.
Releases
Current version is v1.0.1.
You can see changes and earlier versions on CHANGELOG.md
API docs
Documentation for the Progee API is available at Postman Documenter: See docs
Or you can download Postman collection: Download
Progee API is currently deployed and working. Base url is: https://progee-api-v1.herokuapp.com (See API docs above to understand where to use base-url)
Database relations map
Progee API includes 5 main entities: Language (for programming language), Framework (for framework of programming language), AppUser (for user of application), Role (for signed user's role) and Review (for users' review about programming language). And here is relations between tables of PostgreSQL database:

Frontend (Android client)
Currently, there is Android client app for testing Progee-API main features. Progee-Android is in alpha state now. See GitHub repository of Progee-Android for additional information
Tech stack
This REST API is developed using Java programming language and Spring Boot starter of Spring framework. The full tech stack:
- Spring Boot
- Spring Security for authentication and authorization
- JWT for tokens and share security information between two parties โ a client and a server
- AWS S3 for storing images and other files
- Docker for packaging into container
- GitHub Actions for CI/CD
- JUnit 5 for unit and integration tests
- TestContainer for using Docker images in integration tests
- Localstack for mocking AWS services in integration tests
- Spring Data JPA for data access layers
- PostgreSQL for Database
- FlywayDB for Database migrations
- Lombok for reducing boilerplate code
- and etc.
Usage
Attention! This project uses environment variables for some configuration properties. Define your environment variables in application.yml file. Otherwise default values will be used.
- JWT_SECRET
- DEFAULT_ENCRYPTED_PASSWORD
- AWS_ACCESS_KEY
- AWS_SECRET_KEY
Hint: Get AWS access and secret keys from your Amazon Web Services console
Contribution
If you would like to contribute to this project reach out to me. Contact Information can be found below or by clicking on the 'Contact-Information' link provided in the Table of Contents.
Licenses
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Contact Information
- Email Address: farrukhbekkhusainov@gmail.com
- Telegram profile
- GitHub profile