update readme
This commit is contained in:
150
README.md
150
README.md
@@ -1,3 +1,149 @@
|
||||
# ToDo-App_Node.js_Test
|
||||
# Todo App with Node.js, Express, and PostgreSQL
|
||||
|
||||
Tests für node.js mit auth
|
||||
A full-stack Todo application with user authentication built using Node.js, Express, PostgreSQL, and JWT.
|
||||
|
||||
## Features
|
||||
|
||||
- User authentication (register, login, logout)
|
||||
- JWT-based session management with HTTP-only cookies
|
||||
- Create, read, update, and delete todo items
|
||||
- Responsive UI with real-time updates
|
||||
- PostgreSQL database storage
|
||||
- Docker support for development
|
||||
|
||||
## Technologies Used
|
||||
|
||||
- **Backend**: Node.js, Express.js
|
||||
- **Database**: PostgreSQL
|
||||
- **Authentication**: JWT (JSON Web Tokens), bcrypt for password hashing
|
||||
- **Frontend**: HTML, CSS, JavaScript (Vanilla)
|
||||
- **Development Tools**: Docker, Nodemon
|
||||
|
||||
## Setup Instructions
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js (v14 or newer)
|
||||
- npm or yarn
|
||||
- Docker and Docker Compose (for containerized database)
|
||||
- PostgreSQL (if not using Docker)
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone <your-repository-url>
|
||||
cd ToDo-App_Node.js_Test
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### Database Setup
|
||||
|
||||
#### Using Docker:
|
||||
|
||||
1. Start PostgreSQL container:
|
||||
```bash
|
||||
npm run create-db-container
|
||||
```
|
||||
|
||||
2. Create the database:
|
||||
```bash
|
||||
npm run db:create
|
||||
```
|
||||
|
||||
3. Initialize the database with tables:
|
||||
```bash
|
||||
npm run db:init
|
||||
```
|
||||
|
||||
#### Manual Setup:
|
||||
|
||||
1. Create a PostgreSQL database named `todo_app_db`
|
||||
2. Run the SQL script in `/db/init_postgres.sql` to create tables
|
||||
|
||||
### Environment Configuration
|
||||
|
||||
Create a `.env` file in the root directory with the following variables:
|
||||
|
||||
```
|
||||
# PostgreSQL Database Configuration
|
||||
DB_USER=postgres
|
||||
DB_HOST=localhost
|
||||
DB_DATABASE=todo_app_db
|
||||
DB_PASSWORD=password
|
||||
DB_PORT=5432
|
||||
|
||||
# JWT Configuration
|
||||
JWT_SECRET=your_secure_secret_key
|
||||
JWT_EXPIRES_IN=1h
|
||||
|
||||
# Server Configuration
|
||||
PORT=3000
|
||||
```
|
||||
|
||||
> **Important**: Replace `your_secure_secret_key` with a strong, random secret for production use.
|
||||
|
||||
### Running the Application
|
||||
|
||||
Development mode with auto-restart:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Production mode:
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
Access the application at: http://localhost:3000
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Authentication
|
||||
|
||||
- **POST** `/api/auth/register` - Register a new user
|
||||
- **POST** `/api/auth/login` - Log in a user
|
||||
- **POST** `/api/auth/logout` - Log out the current user
|
||||
- **GET** `/api/auth/status` - Check user's authentication status
|
||||
|
||||
### Todo Items
|
||||
|
||||
- **GET** `/api/todos` - Get all todos for logged-in user
|
||||
- **POST** `/api/todos/newEntry` - Create a new todo
|
||||
- **PUT** `/api/todos/:id` - Update a todo's completion status
|
||||
- **DELETE** `/api/todos/:id` - Delete a todo
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
.
|
||||
├── db/
|
||||
│ └── init_postgres.sql # Database initialization script
|
||||
├── middleware/
|
||||
│ └── authMiddleware.js # JWT authentication middleware
|
||||
├── public/ # Static frontend files
|
||||
│ ├── index.html # Main todo app page
|
||||
│ ├── login.html # Login page
|
||||
│ ├── register.html # Registration page
|
||||
│ ├── script.js # Frontend JavaScript
|
||||
│ └── style.css # CSS styles
|
||||
├── routes/
|
||||
│ ├── authRoutes.js # Authentication routes
|
||||
│ ├── todoRoutes.js # Todo CRUD operations
|
||||
│ └── viewRoutes.js # HTML page serving
|
||||
├── .env # Environment variables
|
||||
├── .gitignore # Git ignore file
|
||||
├── db.js # Database connection setup
|
||||
├── package.json # Project dependencies
|
||||
├── README.md # Project documentation
|
||||
└── server.js # Main application entry point
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
|
||||
*This project was created for learning and demonstration purposes only.*
|
Reference in New Issue
Block a user