Skip to content

Scheduling application allowing users to manage and share their schedules with friends

License

Notifications You must be signed in to change notification settings

Axan18/RideTheSchedule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RideTheSchedule

RideTheSchedule is web application offering possibilities of managing schedules, and sharing it with your friends. After signing in, user can create his schedule for any day, add other users to friends list and share them his schedule for the sake of improved collaboration. To sign in Google Oauth2 is used, and then JWT is created to be used for authentication. Communication is done with HTTPS, as it is necessary for sending JWT in cookies. SpringBoot & Hibernate handle RESTful backend services and connectivity with database. On the frontend FullCalendar framework is used to provide nicely looking schedule UI. Dynamic size of the page is secured by BootStrap framework. Frontend is really simple with just basic use of FetchAPI to get data from backend.

The goal of the app is to show (and train) my backend development skills, especially in Java and Spring ecosystem.

Table of contents

Technologies

  • Backend
    • Java
    • SpringBoot
    • Hibernate
    • PostgreSQL
    • JUnit
    • Mockito
    • Maven
    • Lombok
  • Frontend

How it looks like?

Welcoming screen

obraz

Home screen

obraz

Empty schedule & forms

obraz

Shared schedule view

obraz

Setup

Frontend

As HTTPS certificate is necessary to send JWT in cookies, we have to generate local certificate:

Install mkcert if you don't have it: Check instructions here

Now lets generate certificate:

mkcert -key-file localhost-key.pem -cert-file localhost.pem localhost

Go into frontend directory:

cd frontend/

Install dependencies:

npm -install

Run HTTPS server:

npx http-server -S -C localhost.pem -K localhost-key.pem

Backend

Create your PostgreSQL database:

CREATE DATABASE db_name;

Hibernate will manage creating tables. Set correct schema_name in appilaction-postgresql.properties

spring.jpa.properties.hibernate.default_schema=schema_name

To fill application properties you have to have .env file with such values set:

DB_USERNAME=
DB_PASSWORD=
DB_URL=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
JWT_SECRET=
HTTPS_PSWD=

Build the .jar file:

mvn clean install -DskipTests

Run application:

java -jar target/RideTheSchedule-1.0.0-SNAPSHOT.jar --spring.profiles.active=postgresql

Future updates

As the app is in constant development phase, features will be added:

  • todo list functionalities
  • more features to interact with other users like comments to events
  • friends management improvement & profile page
  • better security and error handling
  • Flyway migrations
  • more backend tests
  • deployment to open access in the internet
  • own Spring Authorization Server

About

Scheduling application allowing users to manage and share their schedules with friends

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published