A simple note-taking web application built with Spring Boot and Vue.js.
- ✅ User Registration
- ✅ User Login with JWT Authentication
- 🎨 Modern, responsive UI
- Java 17
- Spring Boot 3.2.0
- Spring Security
- Spring Data JPA
- PostgreSQL Database
- JWT Authentication
- Vue.js 3
- Vue Router
- Axios
- Modern CSS
- Java 17 or higher
- Maven 3.6+
- Node.js 14+ and npm
- PostgreSQL 12+
The application connects to a PostgreSQL database with the following configuration:
- Host: localhost
- Port: 5432
- Database: vibenotes2
- Username: postgres
- Password: password
Make sure PostgreSQL is running and the database vibenotes2 is created with these credentials.
- Navigate to the backend directory:
cd backend- Build the project:
mvn clean install- Run the application:
mvn spring-boot:runThe backend will start on http://localhost:8080
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Run the development server:
npm run serveThe frontend will start on http://localhost:8081
- Open your browser and navigate to
http://localhost:8081 - Click "Register here" to create a new account
- Enter a username (min 3 characters) and password (min 6 characters)
- After registration, you'll be automatically logged in
- Use the same credentials to log in on subsequent visits
POST /api/auth/register- Register a new userPOST /api/auth/login- Login with credentialsGET /api/auth/test- Test endpoint
VibeNote2/
├── backend/ # Spring Boot backend
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/vibenotes/
│ │ │ │ ├── config/ # Security configuration
│ │ │ │ ├── controller/# REST controllers
│ │ │ │ ├── dto/ # Data transfer objects
│ │ │ │ ├── model/ # JPA entities
│ │ │ │ ├── repository/# Data repositories
│ │ │ │ ├── security/ # JWT filter
│ │ │ │ ├── service/ # Business logic
│ │ │ │ └── util/ # Utility classes
│ │ │ └── resources/
│ │ │ └── application.properties
│ │ └── test/
│ └── pom.xml
├── frontend/ # Vue.js frontend
│ ├── public/
│ ├── src/
│ │ ├── views/ # Page components
│ │ ├── services/ # API service
│ │ ├── router/ # Vue Router config
│ │ ├── App.vue
│ │ └── main.js
│ ├── package.json
│ └── vue.config.js
└── README.md
The application uses JWT (JSON Web Tokens) for authentication:
- Tokens are generated upon successful login/registration
- Tokens are stored in localStorage
- Protected routes require a valid JWT token
- Passwords are encrypted using BCrypt
- Create, edit, and delete notes
- Note categories and tags
- Rich text editor
- Search functionality
- Note sharing
- Export notes
This project is open source and available for personal and educational use.