- 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.0
npm >= 8.3.1
python >= 3.8
pip >= 21.3.1
AWS account
- if you want to use AWS- Setup variables in the
backend\config.py
file 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.py
under# 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 frontend
npm install
ornpm i
- installs all packagesnpm install --save-dev
- installs devDependenciesnpm start
- starts the app
- Setup the project as per General sub-section
cd backend
py -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 help
to 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