- Clone the repository
- Setup the database
migrate -database sqlite3://database/sqlite.db -path ./migrations up
- Create container
docker build -t annotation-manager .
- Run container
docker run -p 8080:8080 -v ./config/:/app/config/ -v ./database/:/app/database annotation-manager
- Use Postman documentation (from ./documents/postman) to test the application (Optional)
The application is far from being perfect and production ready. I would have liked to spend more time on it but unfortunately I didn't have time to do so. I have listed some of the things that I would have liked to do if I had more time:
- Right now the application doesn't have almost any user management. It has hardcoded user credentials (i.e. 'admin:admin' and 'test:test'). Admin has all rights and test user doesn't have any.
- The configuration (i.e. obtaining values from config file) could contain bugs since I didn't have time to test it properly.
- The application doesn't have any tests. I would have liked to write some unit tests for all layers (i.e. controller, usecase, repository) and packages.
- The application doesn't have any logging.
- The application doesn't have any tracing.
- The application could have Swagger documentation.
- The application could have better error handling and http responses.
- The application could have graceful shutdown.
- The application could have better input validation.
- I have used gin as a web framework. I would have liked to use something more lightweight like fiber.
- I have implemented single stage build in Dockerfile. I would have liked to implement multi stage build to reduce the final size of the image.
- There are many things to do yet. But I think that this is a good start.