Welcome to TinyTasks, the most basic task management app in the whole wide world - no fancy UI, no mobile view, a very limited set of features and an even more limited set of tests. Fortunately, you are here to save the day and improve parts of TinyTasks. Feel free to focus on a single feature or aspect of the application. The Contributor Tasks section contains some ideas if you don't know where to start.
The application consists of a frontend and a backend. Both can be started separately. The frontend is Angular based and the backend is based on Spring Boot.
Before you begin with the frontend, you need to setup your development environment. You can find good and clear instructions on the Angular website under the Quickstart section.
Nothing else needs to be installed for the backend itself. However, the backend requires a PostgreSQL database server that is provided by a Docker container. Therefore, Docker is required. Here, too, you can find the information you need to set up the runtime environment, on the Docker website under Get Started.
The fronted was generated with Angular CLI.
Run yarn
to install the dependencies for the app. You can also add new dependencies via yarn add
.
Run ng serve
for a dev server. Navigate to http://localhost:4200/
. The app will automatically reload if you change
any of the source files.
Run ng generate component component-name
to generate a new component. You can also use
ng generate directive|pipe|service|class|guard|interface|enum|module
.
Run ng build
to build the project. The build artifacts will be stored in the dist/
directory. Use the --prod
flag for a production build.
Run ng test
to execute the unit tests via Karma.
Run ng e2e
to execute the end-to-end tests via Protractor.
To get more help on the Angular CLI use ng help
or go check out the
Angular CLI README.
The backend was generated with Spring Initializr.
Run docker-compose up -d
to launch the PostgreSQL docker container.
Run ./gradlew bootRun
for a dev server. The server is available under http://localhost:8080/
.
Run ./gradlew test
to execute the tests.
The following guides illustrate how to use some features concretely:
- Building a RESTful Web Service
- Serving Web Content with Spring MVC
- Building REST services with Spring
- Accessing Data with JPA
Feel free to focus on a single feature or aspect of the application. Here are some ideas if you don't know where to start:
-
Frontend application feature improvements:
- a user can mark tasks as done
- a user can assign due dates
- a user can assign priorities
- a user can add categories
- a user can sort the list of tasks
- a user can search for a specific task
- a user can add a description for a task
- a user can use markdown
- a user's tasks are persisted in the browser's storage
- ...
-
Frontend application UI improvements:
- improve the overall design
- improve the UI of an existing feature
- add a mobile view
- add mobile gesture support
- ...
-
Frontend application structural improvements:
- improve or introduce domain models
- improve the existing code structure
- add unit tests for existing features
- add e2e tests for existing features
- ...
-
Backend application features:
- the application contains a RESTful API
- the tasks are persisted in the database
- ...
-
Backend application structural improvements / proposals:
- improve or introduce an architecture (e. g. presentation, domain, data source)
- provide interfaces for the domain layer / business logic
- ...
As you can see, there's a lot to do. Just pick one of the ideas above or surprise us with one of your own improvements. Also, do not hesitate to contact us if you run into any problems. We are here to help.
You can simply create a new branch and start working on TinyTasks. Feel free to create a pull request if you would like to see your changes merged into the application.