- Description
- Demo
- Screenshots
- Architecture Overview
- API Documentation
- Frontend Component Tree Visualized
- ERD Visualized
- Installation and Usage
It is a full-stack blog web application built with React on the frontend and Django/DRF on the backend integrated with AWS-S3 & AWS-RDS services.
Features:
- JWT authentication and authorization
- Responsive layout
- Users:
- Users can:
- Signup
- Login
- Logout
- Update their email, password or profile picture
- Delete their account
- Currently loggedin user info is displayed on the home page
- Users can:
- Blog posts:
- Users can:
- Create a post
- Edit their post
- Delete their post
- Applaud a post i.e. like/unlike a post
- Comment on the post
- Delete their comment
- Save/unsave a post to their reading list
- Save their draft and come back later to publish it
- Category-wise blogs filtering on the home page
- the categories supported are arts, games, home, health, technology, recreation, business, society, sports, science
- Pagination of blogs
- Search functionality i.e. search a blog by its title
- A rich text editor for writing a blog
- Users can:
Check the video demo at https://youtu.be/70gXH6j7XtQ
All the endpoints are listed below. However, to view the details of the endpoints, visit Chronicles Api Docs.
-
Users:
api/users/user/signup/- POSTapi/users/user/login/token/- POSTapi/users/user/login/token/refresh/- POSTapi/users/all/- GETapi/users/user/- GET, PUT, DELETE
-
Blogs:
api/blogs/blogpost/- POSTapi/blogs/all/- GETapi/blogs/blog/{blogId}/- GET, PUT, DELETEapi/blogs/userblogs/- GET
-
Comments:
api/blogs/blog/{blogId}/commentpost/- POSTapi/blogs/blog/{blogId}/comments/all/- GETapi/blogs/blog/{blogId}/comment/{commentId}/- PUT, DELETEapi/blogs/blog/{blogId}/totalcomments/- GET
-
Applauds:
api/blogs/blog/{blogId}/applaud/- POSTapi/blogs/blog/{blogId}/applauder/exists/- GET
-
Reading-list:
api/blogs/blog/{blogId}/readinglist/save/- POSTapi/blogs/readinglist/all/- GETapi/blogs/blog/{blogId}/reader/exists/- GET
- Requirements:
node >= 16.14.0npm >= 8.3.1python >= 3.8pip >= 21.3.1AWS account- if you want to use AWS- Setup variables in the
backend\config.pyfile to encapsulate all your secret-keys related to AWS.
git clone https://github.com/AI-14/chronicles.git- clones the repositorycd chronicles
NOTE: If you want to use local machine for image uploads rather than AWS-S3, then remove all the configs in
backend\core\settings.pyunder# AWS-S3. Then inbackend\core\urls.py, add this lineurlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT). With this setting, images will be stored underbackend\media\.
- Setup the project as per General sub-section
cd frontendnpm installornpm i- installs all packagesnpm install --save-dev- installs devDependenciesnpm start- starts the app
- Setup the project as per General sub-section
cd backendpy -m venv yourVenvName- creates a virtual environmentyourVenvName\Scripts\activate.bat- activates the virtual environmentpip install -r requirements.txt- installs all modulespython manage.py makemigrations&python manage.py migrate- migrates all the tables to dbpython manage.py createsuperuser- creates a superuserpython manage.py runserver- runs the server
NOTE: First run backend server (it will run on
http://127.0.0.1:8000), then run frontend app (it will run onhttp://127.0.0.1:3000)
You need to have make installed in your machine
- Setup the project as per General sub-section
make build-backend- builds the backendmake build-frontend- builds the frontendmake run-backend- runs the backendmake run-frontend- runs the frontend (make sure you open another cmd to run this command)
NOTE: Use
make helpto see all the commands
You need to have Docker installed in your machine
- Setup the project as per General sub-section
docker-compose build- build the images for both frontend and backenddocker-compose up- runs the containers
NOTE: To setup docker dev-env, include volumes in the
docker-compose.yaml



