A restful API built with Node.js, MySQL, JWT authentication, TypeScript, and Docker.
This project uses Docker and docker-compose.
Rename the .env.example file into .env and modify it according to your credentials and settings.
The Docker container includes the Node.js and the MySQL servers. Start the servers with the following command:
docker compose up -d
A web server will be setup, available at http://localhost:4968. Change to TypeScript files will trigger an automatic reload of the server, and your modifications will imediatelly be taken into account. One database named bugtracker_db is also created in the MySQL server. Please note that the server may take a moment to install dependencies and start.
To stop, run docker-compose stop or hit CTRL-C on the terminal your docker-compose is running in.
After that, to start with code changes, you'll want to docker-compose down
to clean up.
Logs of containerized servers are captured and available in Docker logs.
On first run, the app is populated with initial data: tasks, users, projects, comments. See init.sql SQL dump for more details. The initial accounts are as follows:
| Username | Password | Role |
|---|---|---|
| [email protected] | [email protected] | admin |
| [email protected] | [email protected] | member |
| [email protected] | [email protected] | member |
An api with the following routes
/signupand/login./tasks/projects/users/comments
An authentication system is included using the jsonwebtoken library.
/signuphelps create an account/logingenerates a token if validusernameandpasswordare provided- All the other routes are protected by the token authentication system
Tests are grouped under the folder src/__tests__ and are powered by Jest. Run all test suites with the following command:
npm test