This app was initially created as the Final Project of CS50's Introduction to Computer Science.
Website's functionality: Create sports events and centralize information of matches. Theme Motivation of this app: Difficulty of meeting people, for the practice of sport, for any kinds of reasons. If you recently moved to a new country/region or have lost contact with your friends, you can use the website as a tool for socializing and play sports.
Video Demo (for CS50's): Youtube video link
- Account creation with unique username and e-mail
- Password safely encoded and stored in database
- Credentials check and login with session
- Send a message to the registered e-mail containing a new password
- Option to update Name and Password when logged in
- Match creation with field validation
- Match participation in which you are not participating
- Match leaving in which you are participating
- Match delete if you are the owner
For the database modeling, a diagram with each table and relationships was created for the SportsBuddy application:
- Use the file configure-postgres.sql in order to give your PostGresSQL database the necessary configuration. This way we can properly use the different profiles:
dev
andprod
. - Use the file start_data-postgres.sql to initialize tables and constraints in your PostGresSQL database. So just run the application for the first time, it will automatically input data if not existent.
- After changes run
docker build -t sportsbuddy .
in a project root directory to build application image. - After image is fully built, run
docker run -d -p 8080:8080 sportsbuddy
to start the image - With a browser, access the app via http://localhost:8080/
- (Optional) run
docker logs -t <container>
to see the logs
Database for testing is in-memory type, for fast and convenient usage. It will be updated in the future. You won't be able to send the message via e-mail, unless account details are changed in application.properties file
Object Oriented Programming
Dependency Injection (Design pattern)
MVC Structure (Model, View, Controller)
- Java
- Spring-Boot
- Java Persistence API (JPA)
- Hibernate (object relational mapping)
- Thymeleaf (Frontend java engine)
- Maven (build, dependencies)
- Testing (JUnit, Mockito)
- Spring Security (Form based login)
- JavaScript (DOM manipulation)
- HTML
- Bootstrap
- Code coverage
- CircleCI