Skip to content
This repository was archived by the owner on Jan 6, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 29 additions & 15 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,19 +1,33 @@
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

# Test binary, built with `go test -c`
*.test
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

# Output of the go coverage tool, specifically when used with LiteIDE
*.out
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

# Dependency directories (remove the comment below to include it)
# vendor/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

out/

.idea
### VS Code ###
.vscode/
Binary file added .mvn/wrapper/maven-wrapper.jar
Binary file not shown.
2 changes: 2 additions & 0 deletions .mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
48 changes: 26 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,34 @@
### Requirements
# SINGLE TODO Api

- Implement one single API which accepts a todo task and records it
- There is a maximum **limit of N tasks per user** that can be added **per day**.
- Different users can have **different** maximum daily limit.
- Write integration (functional) tests
- Write unit tests
- Choose a suitable architecture to make your code simple, organizable, and maintainable
- Write a concise README
- How to run your code locally?
- A sample “curl” command to call your API
- How to run your unit tests locally?
- What do you love about your solution?
- What else do you want us to know about however you do not have enough time to complete?
Single API which accepts a todo task and records it
Contents:
- There is a maximum limit of N tasks per user that can be added per day.
- Different users can have different maximum daily limit.

### Notes

- We're using Golang at Manabie. **However**, we encourage you to use the programming language that you are most comfortable with because we want you to **shine** with all your skills and knowledge.
## Feature
- Create todo task (includes: UT & IT)

### How to submit your solution?
## Tech
- Spring Boot
- Spring JPA
- MySQL

- Fork this repo and show us your development progress via a PR

### Interesting facts about Manabie
## Setup local machine
Install the dependencies and devDependencies and start the server.

- Monthly there are about 2 million lines of code changes (inserted/updated/deleted) committed into our GitHub repositories. To avoid **regression bugs**, we write different kinds of **automated tests** (unit/integration (functionality)/end2end) as parts of the definition of done of our assigned tasks.
- We nurture the cultural values: **knowledge sharing** and **good communication**, therefore good written documents and readable, organizable, and maintainable code are in our blood when we build any features to grow our products.
- We have **collaborative** culture at Manabie. Feel free to ask trieu@manabie.com any questions. We are very happy to answer all of them.
```sh
1. Open eclipse or Spring tool suites
2. Import existing maven project
3. Create 3 database: todos and todos_test
4. Run sql file: create_tables_data.sql
5. Create tables for database todo_test before run unit test or integration test
6. Before run local you need change username and password to connect to mysql in 2 file: application.properties ( one for development, one for testing)
7. To run local: right click file "TodoController" > "Run As" > "Java Application"
```

Thank you for spending time to read and attempt our take-home assessment. We are looking forward to your submission.
## Curl example
```sh
curl -X POST http://localhost:9090/api/todo/tasks -H 'Content-Type: application/json' -d '{"title":"title_test","description":"ABC","userId":1}'
```
Loading