The development of NotesTaking followed a structured and iterative approach to ensure a well-integrated and efficient application.
-
Requirement Analysis:
- Defined the core functionalities, including note creation, editing, and deletion.
- Chose appropriate technologies for a seamless frontend-backend connection.
-
Design and Architecture:
- Designed a modular architecture using Django Rest Framework (DRF) for the backend and Next.js for the frontend.
- Used SQLite as a lightweight and efficient database solution.
-
Implementation:
- Developed a RESTful API in Django DRF to handle note-related operations.
- Built a responsive UI using Next.js and TailwindCSS.
- Configured CORS and CSRF settings to allow secure communication between frontend and backend.
- Allowed public API access to facilitate frontend-backend interaction during development.
-
Testing and Optimization:
- Performed functional testing to ensure API and UI reliability.
- Applied performance optimizations for a smoother user experience.
-
Frameworks and Libraries:
- Used Django Rest Framework to build a scalable and modular backend.
- Selected Next.js for frontend development due to its server-side rendering and optimized performance.
-
Database Choice:
- Used SQLite for simplicity, quick setup, and lightweight storage.
-
Frontend-Backend Communication:
- Configured CORS and CSRF settings to allow controlled access between the two components.
- API authentication was simplified by allowing public access during development.
-
UI and User Experience:
- Used TailwindCSS for fast, responsive, and consistent styling.
- Implemented a clean and minimalistic UI for an intuitive note-taking experience.
-
OpenAI GPT-4:
- Assisted in structuring the application architecture.
- Provided guidance on best practices for REST API design and frontend-backend integration.
- Helped generate repetitive code and optimize components.
- Reviewed and improved documentation, including this README file.
-
Code Analysis and Optimization:
- Suggested optimizations for database queries and API endpoints.
- Helped identify and fix potential issues in frontend state management.
The use of AI streamlined the development process, improved code efficiency, and ensured best practices were followed.
Make sure you have installed:
- Node.js (Recommended: version 18 or later).
- Python (Recommended: version 3.8 or later).
- SQLite (included by default in Python, used as the database).
- npm and pip for package management (included with Node.js and Python respectively).
The backend uses Django Rest Framework (DRF) to handle the REST API.
-
Clone the project repository if you haven’t already:
git clone https://github.com/alejomjc/NotesTaking cd NotesTaking -
Navigate to the backend directory:
cd backend -
Create and activate a Python virtual environment:
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
-
Install the project dependencies:
pip install -r requirements.txt
-
Apply database migrations:
python manage.py migrate
-
(Optional) Create a superuser to access the Admin Panel:
python manage.py createsuperuser
-
Run the development server:
python manage.py runserver
The server will be available at: http://127.0.0.1:8000/
The frontend uses Next.js together with TailwindCSS to create a modern, fast interface.
-
Navigate to the frontend directory:
cd frontend -
Install the project dependencies:
npm install
-
Start the development server:
npm run dev
The server will be available at: http://localhost:3000/
- Access the backend at: http://127.0.0.1:8000/
- Access the frontend at: http://localhost:3000/
The application should now be ready to use! 🚀