A Reddit clone using Django and Angular
- User authentication.
- User can create stand alone posts and group posts.
- User can follow people, posts.
- Thread discussions on posts
- Upvote and downvotes on posts and comments
- Report posts
- Bookmark posts
- User can join groups, create groups which can be private, restricted or public.
- Invites and member joining requests for groups
-
Backend
- Python 3.8+
- virtualenv
- WSL
-
Frontend
- Angular 10.2.4 (or 10.2.5)
- Node 10.13.x +
Clone the repository and enter the root directory
git clone https://github.com/madhvi-n/django-reddit.git
cd django-reddit
Create a virtual environment and activate it
virtualenv venv
source venv/bin/activate
Making sure your virtual environment is activated, install the dependencies using pip
pip install -r requirements.txt
You can set the secret key for django project in 2 ways
- Edit the
reddit_clone/settings.py
file and add a key manually, some random string. - Edit the venv file to export
SECRET_KEY
After installing dependencies, migrate Django apps.(You will find the list of apps when you run the command python manage.py runserver
)
python manage.py migrate
Finally start your Django server
python manage.py runserver
Visit http://127.0.0.1:8000/
or localhost:8000
for running web server
Alternatively you can access the admin interface on http://127.0.0.1:8000/admin/
or localhost:8000/admin
Access python shell
python manage.py shell
from django.contrib.auth.models import User
from posts.models import Post
from groups.models import Group
user = User.objects.get(id=1)
post = Post.objects.create(title="Something here", content="A very long text as the content here", author=user)
group = Group.objects.create(name="Django", description="Official Django community on Django Reddit")
python manage.py populate_users
python manage.py populate_posts
python.manage.py populate_tags
python.manage.py populate_groups
Start another shell tab and access the root of frontend directory static/frontend/reddit-app
(without bash or activated virtual environment).
Install the angular dependencies
npm install
Visit http://127.0.0.1:4200
or localhost:4200
to access frontend.