An open API service indexing awesome lists of open source software.

https://github.com/sandundil2002/note_taker_v2

Note Taker V2 is a Spring Boot application tailored for managing notes efficiently. It features three branches, each showcasing different levels of security, from basic to JWT authentication. The project leverages modern technologies to ensure a secure and robust note-taking experience.
https://github.com/sandundil2002/note_taker_v2

gradle hibernate java jpa-hibernate jwt-authentication mysql-database rest-api spring-boot

Last synced: 5 months ago
JSON representation

Note Taker V2 is a Spring Boot application tailored for managing notes efficiently. It features three branches, each showcasing different levels of security, from basic to JWT authentication. The project leverages modern technologies to ensure a secure and robust note-taking experience.

Awesome Lists containing this project

README

          

Typing SVG

Welcome to the Note Taker V2 project repository! Here you'll find a Spring Boot application designed for note management boasting three distinct branches that implement varying levels of security. Dive into the repository to explore the different security features from no security to basic authentication to advanced JWT-based authentication.

Branches

1) master: This branch contains the basic version of the project with no security features implemented.
2) secure-basic: This branch adds basic authentication and authorization features using Spring Security.
3) secure-jwt: This branch enhances security by implementing JWT (JSON Web Token) authentication.

API Endpoints

Authentication

* POST /api/v1/auth/signup: Registers a new user.
* POST /api/v1/auth/signin: Authenticates an existing user and returns a JWT.
* POST /api/v1/auth/refresh: Refreshes the JWT.

Notes

* POST /api/v1/notes: Creates a new note.
* GET /api/v1/notes/allnotes: Retrieves all notes (Admin only).
* GET /api/v1/notes/{noteId}: Retrieves a note by ID.
* PATCH /api/v1/notes/{id}: Updates a note.
* DELETE /api/v1/notes/{id}: Deletes a note.

Users

* DELETE /api/v1/users/{id}: Deletes a user.
* GET /api/v1/users/{id}: Retrieves user details by ID.
* GET /api/v1/users: Retrieves all users (Admin only).
* PATCH /api/v1/users/{id}: Updates user details.


🧐 Features

Here're some of the project's best features:

* Create new notes
* View all notes
* View a specific note by ID
* Update existing notes
* Delete notes
* User management (create update delete users)
* File upload for user profile pictures

🛠️ Installation Steps:

1. Clone the repository:

```
https://github.com/sandundil2002/Note_Taker_V2.git
```

2. Ensure your application.properties file has the correct database configuration:

```
spring.datasource.url=jdbc:mysql://localhost:3306/note_taker?createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&useSSL=false spring.datasource.username=root spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```

3. Checkout the branch you want to explore:

```
git checkout
```

4. Build and run the application:

```
./gradlew bootRun
```

API Documentation

View API Documentation


💻 Built with

Technologies used in the project:

* Spring Boot: Framework to simplify the development of Java-based enterprise applications.
* Spring Security: Security framework for authentication and authorization.
* JWT (JSON Web Token): For secure communication between client and server.
* Hibernate: ORM framework for database interaction.
* MySQL: Relational database management system.
* Gradle: Build automation tool.
* ModelMapper: Object mapping library to simplify code.
* Lombok: Library to reduce boilerplate code.