Skip to content

Seeru-crypto/Dater_BE

Repository files navigation

Dater Back-end

This is the Dater project Back-end. It is built using Spring Boot. It implements basic CRUD functionality on all models, checks all the events in the events at the given interval and if needed sends out a daily report incoming events to the user. Every notification (mail or sms) is logged in the logging database.

Front-end github repo

docker build --build-arg JAR_FILE=build/libs/\*.jar -t dater-be .
docker run -e "SETTING_PIN=1234 spring.data.mongodb.uri=mongodb://localhost:27017" -p 5005:8080 -t dater-be

Setup

  1. On first time setup, user needs to configure email address, which is used to send out emails. The config email security settings has to be turned on to allow outside apps to access this email acc.

    In `application.properties` Replace the username with email aadress and email password with your emaol password.
    
    For the configurations to work in our applications, you must configure gmail account settings to allow connections from less secure apps.
    
    On the Gmail account, click on manage account -> security -> turn on access to less secure apps
    
  2. Setup mongoDb docker

  • To build & run the image
    • docker pull mongo && docker run -d --name mongo -p 27017:27017 mongo
  • In application.properties file set the mongoDB.uri filed as the connection string (mongodb://localhost:270717)
  1. Start Gradle server

ToDo:

  • Serve API endpoints
    • GET events
    • POST Events
    • DELETE Event
    • UPDATE Event
    • Add GetBy endpoints (eventDescription, date, ect).
    • Add data validation for POST requests.
  • During start-up server creates a custom schema to DB
  • Server can implement CRUD functionality to DB
  • Integrate React Application with Spring boot back-end
  • Server Sends the e-mail at a specified date.
    • Server Check the dates in DB once every 24h
      • Create recurring tasks
      • Create Event date validation logic
      • add remind annually functionality
    • function that sends e-mail to designated aadress
      • Emailer implementation
      • email body is defined in a given template
      • Create a daily report, using said templates (name of events, date and desc)
      • Sent emails are logged
      • Testing emails,
    • server sends sms notification if the sms value is selected.
      • sms integration tests are done.
      • sms model structure is implemented
      • sms funcationlity is implemented, using twilio
  • Create admin object model.
  • Add Send email REST API endpoint.
  • Add 66% test coverage
  • Create server Dockerfile
  • Add Swagger Module
  • enable spring actuator with health & scheduler endpoints
  • make CORS settings configurable
  • Publish
    • Setup MongoDB server
    • Publish FE & BE in heroku.
  • Security
    • Add data validation to all requests where applicable
    • Add request throttling, to prevent DDOS and malicous spamming.
    • Add proper user registration and authentication, using auth0 (Realised in module 3)

PORTS

  • Front uses port 5000
  • Back-end uses 5005
  • MongoDB uses port 270717