{"id":18431994,"url":"https://github.com/firehead90544/rudra-django","last_synced_at":"2026-02-16T17:03:07.998Z","repository":{"id":188976831,"uuid":"631547430","full_name":"FireHead90544/rudra-django","owner":"FireHead90544","description":"My Awesome Portfolio Website Built w/ Django \u0026 TailwindCSS","archived":false,"fork":false,"pushed_at":"2024-07-30T23:25:40.000Z","size":2261,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-23T22:29:56.092Z","etag":null,"topics":["backend","django","python","tailwindcss","webdevelopment"],"latest_commit_sha":null,"homepage":"https://rudra.is-a.dev/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FireHead90544.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-23T11:20:25.000Z","updated_at":"2024-07-30T23:25:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"367c9665-ab1a-4280-b0c6-a470e3f21402","html_url":"https://github.com/FireHead90544/rudra-django","commit_stats":null,"previous_names":["firehead90544/rudra-django"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FireHead90544/rudra-django","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FireHead90544%2Frudra-django","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FireHead90544%2Frudra-django/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FireHead90544%2Frudra-django/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FireHead90544%2Frudra-django/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FireHead90544","download_url":"https://codeload.github.com/FireHead90544/rudra-django/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FireHead90544%2Frudra-django/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29513436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","django","python","tailwindcss","webdevelopment"],"created_at":"2024-11-06T05:27:03.878Z","updated_at":"2026-02-16T17:03:07.982Z","avatar_url":"https://github.com/FireHead90544.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rudra-django\nMy Awesome Portfolio Website Built w/ Django \u0026 TailwindCSS\n\n# Features\n- Awesome \u0026 Neat UI\n- Blog w/ likes \u0026 comments\n- IP based blogpost view count\n- A fully fledged authentication system\n- A cool dashboard to manage everything\n- A neat portfolio with project showcase\n- Recaptcha enabled contact/hire-me form\n- Hire requests integration w/ discord channel\n- And a lot more cool stuffs which you should yourself figure out.\n\n# Installation\nThe following steps are tested against ubuntu 20.04 LTS.\n- Update the mirrors \u0026 packages\n  ```bash\n  sudo apt update \u0026\u0026 sudo apt upgrade -y \u0026\u0026 sudo apt update\n  ```\n- Install `pip` \u0026 `virtualenv`\n  ```bash\n  sudo apt install python3-pip python3-virtualenv -y\n  ```\n- Clone the repository\n  ```bash\n  git clone https://github.com/FireHead90544/rudra-django\n  ```\n- Activate the virtualenv \u0026 Install the requirements\n  ```bash\n  cd rudra-django \u0026\u0026 virtualenv venv \u0026\u0026 source venv/bin/activate \u0026\u0026 sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib -y \u0026\u0026 pip install -r requirements.txt\n  ```\n- Setup Postgres Database\n  ```bash\n  sudo -u postgres psql\n  ```\n  ```sql\n  CREATE DATABASE \u003cDB_NAME\u003e;\n  CREATE USER \u003cDB_USER\u003e WITH PASSWORD '\u003cYOUR_PASSWORD\u003e';\n  ALTER ROLE \u003cDB_USER\u003e SET client_encoding TO 'utf8';\n  ALTER ROLE \u003cDB_USER\u003e SET default_transaction_isolation TO 'read committed';\n  ALTER ROLE \u003cDB_USER\u003e SET timezone TO 'UTC';\n  GRANT ALL PRIVILEGES ON DATABASE \u003cDB_NAME\u003e TO \u003cDB_USER\u003e;\n  \\q\n  ```\n- Set up environment variables however you prefer (an `example.env` is present in the repository as a template).\n- Create the migrations, admin user \u0026 start the server.\n  ```bash\n  python manage.py makemigrations\n  python manage.py migrate\n  python manage.py createsuperuser\n  python manage.py runserver 0.0.0.0:8000\n  ```\n- Set `DJANGO_DEBUG` environment variable to `False`.\n- Collect the static files so that it can be served using nginx.\n  ```bash\n  python manage.py collectstatic\n  ```\n- Create a gunicorn socket and a service to use that socket.\n  ```bash\n  sudo nano /etc/systemd/system/gunicorn.socket\n  ```\n  ```ini\n  [Unit]\n  Description=Django Gunicorn Socket\n  \n  [Socket]\n  ListenStream=/run/gunicorn.sock\n  \n  [Install]\n  WantedBy=sockets.target\n  ```\n  ```bash\n  sudo nano /etc/systemd/system/gunicorn.service\n  ```\n  ```ini\n  [Unit]\n  Description=Django Gunicorn Daemon\n  Requires=gunicorn.socket\n  After=network.target\n  \n  [Service]\n  User=\u003cSSH_USER\u003e\n  Group=www-data\n  WorkingDirectory=/home/\u003cSSH_USER\u003e/rudra-django\n  ExecStart=/home/\u003cSSH_USER\u003e/rudra-django/venv/bin/gunicorn \\\n            --access-logfile - \\\n            --workers 3 \\\n            --bind unix:/run/gunicorn.sock \\\n            rudra.wsgi:application\n  \n  [Install]\n  WantedBy=multi-user.target\n  ```\n- Start and enable the service you just created\n  ```bash\n  sudo systemctl start gunicorn.socket\n  sudo systemctl enable gunicorn.socket\n  sudo systemctl status gunicorn.socket\n  sudo systemctl status gunicorn\n  sudo systemctl daemon-reload\n  sudo systemctl restart gunicorn\n  ```\n- Install nginx\n  ```bash\n  sudo apt install nginx -y\n  ```\n- Serve the gunicorn socket using nginx\n  ```bash\n  sudo nano /etc/nginx/sites-available/\u003cSITE_NAME\u003e\n  ```\n  ```nginx\n  server {\n    listen 80;\n    server_name \u003cEXTERNAL_IP\u003e;\n    client_max_body_size 500M;\n\n    location = /favicon.ico { access_log off; log_not_found off; }\n    location /static/ {\n        root /home/\u003cSSH_USER\u003e/rudra-django;\n    }\n\n    location /media/ {\n        root /home/\u003cSSH_USER\u003e/rudra-django;\n    }\n\n    location / {\n        include proxy_params;\n        proxy_pass http://unix:/run/gunicorn.sock;\n    }\n  }\n  ```\n- Enable the site and allow nginx behind firewall\n  ```bash\n  sudo ln -s /etc/nginx/sites-available/\u003cSITE_NAME\u003e /etc/nginx/sites-enabled\n  sudo nginx -t\n  sudo systemctl restart nginx\n  sudo ufw allow 'Nginx Full'\n  ```\n- If you have custom domains, link them by setting `server_name domain.tld www.domain.tld` in the enabled site configuration. Make sure to update the `ALLOWED_HOSTS` environment variable too \u0026 restart the server.\n  ```bash\n  sudo systemctl restart gunicorn nginx\n  ```\n- If you linked the domains, enable ssl\n  ```bash\n  sudo apt install certbot python3-certbot-nginx\n  sudo certbot --nginx -d domain.tld -d www.domain.tld\n  ```\n- Redirect `http` to `https` by editing the nginx site configuration so that it looks like this.\n  ```bash\n  sudo nano /etc/nginx/sites-available/\u003cSITE_NAME\u003e\n  ```\n  ```nginx  \n  server {\n    server_name domain.tld www.domain.tld;\n    client_max_body_size 500M;\n\n    location = /favicon.ico { access_log off; log_not_found off; }\n    location /static/ {\n        root /home/\u003cSSH_USER\u003e/rudra-django;\n    }\n\n    location /media/ {\n        root /home/\u003cSSH_USER\u003e/rudra-django;\n    }\n\n    location / {\n        include proxy_params;\n        proxy_pass http://unix:/run/gunicorn.sock;\n    }\n\n    listen 443 ssl; # managed by Certbot\n    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem; # managed by Certbot\n    ssl_certificate_key /etc/letsencrypt/live/domamin.tld/privkey.pem; # managed by Certbot\n    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot\n    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot\n  }\n  \n  server {\n      if ($host = domain.tld) {\n          return 301 https://$host$request_uri;\n      }\n      if ($host = www.domain.tld) {\n        return 301 https://$host$request_uri;\n      }\n  \n      listen 80;\n      server_name domain.tld www.domain.tld;\n      return 404; # managed by Certbot\n  }\n  ```\n- Test the automatic ssl renewal utlity \u0026 restart the server.\n  ```bash\n  sudo certbot renew --dry-run\n  sudo systemctl restart gunicorn nginx\n  ```\n\nEven though I have spoonfed almost everything which took me some time to figure out when I first deployed this website, but that made me learn so many stuffs. I'd suggest you to do the same before blindly following these instructions. And as always, if you get any issues you are free to create an issue or you can leverage some LLM to help you out.\nAnd to end with, I don't plan on but you can compile all this in a single bash script and automate everything with a single script execution :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirehead90544%2Frudra-django","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirehead90544%2Frudra-django","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirehead90544%2Frudra-django/lists"}