Giter Club home page Giter Club logo

todo's Introduction

Todo App

This is a quick application build using Kotlin with Micronaut Framework and Angular v15 for the frontend.

It also utilizes Mysql as the database.

Requirements:

  • Todos consist of a title, category and an optional description
  • Todos can be marked as done
  • Todos can be displayed together or by category.
  • Todos can be created.

Framework

Micronaut is a framework for building Microservices and Serverless Application utilizing either Java or Kotlin.

The decision about utilizing it over other frameworks (e.g: Quarkus or Spring Boot), was given facility for initializing up a microservice.

It has easy access to libraries, such JUNIT for testing, as well as it's own data libraries.

Database

For such a small project, most databases would have worked, both relational and non-relational. Thinking in scalability and the possible next steps that I envision to the project, categories would stop from been a string and rather be a relation from todo. Given this reason, I narrowed down the context between MySQL and Postgres. As both databases would offer good reliability, are open source and would offer similar performances, the chosen was made by time of experience utilizing each, and therefore MySQL was the choosen one.

Testing

Both Frontend and Backend are covered by tests. Both uses Fake Pattern for external resources.

The backend would still require to have extended coverage, including Integration Tests as the next step.

Running

Pre requisites

  • Docker
  • Java 21
  • NodeJS

Running

  • Start the database with docker-compose up inside of the todo-backend folder
  • Start the backend with ./gradlew run nside of the todo-backend folder
  • Install the dependencies with npm install or yarn and Start the frontend with npm | yarn start

Testing

  • Frontend tests can be run with yarn test
  • Backend tests can be run with ./gradlew build

Next steps

  • Adding Open API documentation
  • Migrating JDBC from repository to a ORM
  • Implement helper classes for the integration tests
  • Improve monitoring
  • Add further validations
  • Add flyway for migrate database

todo's People

Contributors

brognilucas avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.