Skip to content
This repository has been archived by the owner on Oct 19, 2019. It is now read-only.

azdanov/pawa-task

Repository files navigation

pawaTask

A simple todo list application that keeps track of your time.

Check out the Live Version hosted on Heroku.

Screenshots

Check out an alternative version at azdanov/pawa-task/tree/own-design.

How To

Run

git clone https://github.com/azdanov/pawa-task

cd pawa-task

# Make sure the DB is set (use src/main/resources/init.sql)
# src/main/resources/application.properties

./gradlew bootRun

cd frontend

npm run serve

# Access the app on http://localhost:8080/

Build

./gradlew clean

# Note the -P flag to build the client code
./gradlew build -x test -Pfrontend

java -jar ./build/libs/pawa-task-1.0.0-SNAPSHOT.jar

Docker

A Dockerfile and docker-compose.yaml are available to try out the application without messing around with any settings.

Just run docker-composer up -d. The client should be on http://localhost:8000/ and the api on http://localhost:8080/api/.

WARNING: Spring Boot takes a while to start, so the client may throw some 500 errors at first.

Heroku

This app is hosted on Heroku. Follow this StackOverflow Answer to setup you own app.

Schema

SQL Schema

Commentary

Backend

  • More robust error handling to prevent security related information leakage.
  • Better validation/sanitization of input and proper response messages.
  • Better Gradle settings.
  • Write tests to make changes easier.
  • Host on Heroku for showcase.
  • Add security layer and associate each user with own tasks.
  • Use Spring Rest Starter to remove boilerplate, similar to JpaRepositories.
  • Have an easier way to develop on different platforms by using Docker.
  • Simpler way to develop sql schemas with migrations and seeding of the database with fake data.
  • Use Enum types for priority, e.g https://vladmihalcea.com/the-best-way-to-map-an-enum-type-with-jpa-and-hibernate/
  • Find a better way to add individual comments (Extracted to TaskCommentController and TaskControllerService)
  • Find a way to make one-to-many and many-to-one relationship work. Right now when saving a Task that contains Comments no relationship is created. Comments have an empty foreign key.
  • Figure out which formats Data accepts.
  • Fix Docker.

Frontend

  • Refactor additional components and styles where necessary.
  • Write E2E tests to verify integrity.
  • Remove task sorting in Vuex, and query proper task order in Backend.
  • Add input validation for easier user feedback loop