The Personal Journal App is a full-stack web application that allows users to create, view, edit, and delete journal entries. It features user authentication and a clean, responsive UI built with modern web technologies.
- User Authentication: Secure login and registration using JWT.
- CRUD Operations: Create, read, update, and delete journal entries.
- Responsive Design: Mobile-friendly UI built with TailwindCSS.
- Backend API: RESTful API built with Express and MongoDB.
- Frontend Framework: React with Vite for fast development.
- React: Component-based UI library.
- Vite: Fast build tool for modern web apps.
- TailwindCSS: Utility-first CSS framework.
- React Router: For client-side routing.
- Node.js: JavaScript runtime for server-side development.
- Express: Web framework for building RESTful APIs.
- MongoDB: NoSQL database for storing user and journal data.
- Mongoose: ODM for MongoDB.
- JWT: Secure user authentication.
- Node.js and npm installed.
- MongoDB instance running.
.envfile with the following variables:MONGODB_URI=<your-mongodb-uri> JWT_SECRET_KEY=<your-secret-key> PORT=<your-port>
-
Clone the repository:
git clone <repository-url> cd personal-journal-app
-
Install dependencies for both client and server:
cd server npm install cd ../client npm install
-
Start the backend server:
cd ../server npm run dev -
Start the frontend development server:
cd ../client npm run dev -
Open the app in your browser at
http://localhost:5173.
personal-journal-app/
├── client/ # Frontend code
│ ├── src/ # React components, pages, and context
│ ├── public/ # Static assets
│ ├── vite.config.js # Vite configuration
│ └── package.json # Frontend dependencies
├── server/ # Backend code
│ ├── models/ # Mongoose schemas
│ ├── controllers/ # API logic
│ ├── routes/ # API routes
│ ├── middleware/ # Authentication middleware
│ ├── server.js # Entry point for the backend
│ └── package.json # Backend dependencies
└── README.md # Project documentation
POST /auth/register: Register a new user.POST /auth/login: Login and receive a JWT.
GET /journals: Fetch all journals for the logged-in user.GET /journals/:id: Fetch a specific journal by ID.POST /journals: Create a new journal.PUT /journals/:id: Update an existing journal.DELETE /journals/:id: Delete a journal.
This project is licensed under the MIT License.