{"id":22116301,"url":"https://github.com/akshar-raaj/ramayanquiz","last_synced_at":"2026-05-03T22:34:11.170Z","repository":{"id":265014658,"uuid":"846463594","full_name":"akshar-raaj/ramayanquiz","owner":"akshar-raaj","description":"Drives backend for RamayanQuiz.com","archived":false,"fork":false,"pushed_at":"2025-05-15T03:47:08.000Z","size":130,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-22T21:07:36.735Z","etag":null,"topics":["api","mongodb","postgresql","python","rabbitmq"],"latest_commit_sha":null,"homepage":"https://ramayanquiz.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akshar-raaj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2024-08-23T09:07:38.000Z","updated_at":"2025-05-15T03:47:11.000Z","dependencies_parsed_at":"2024-12-12T07:18:30.895Z","dependency_job_id":"44db0ef4-2280-4a14-9756-cd3390635b80","html_url":"https://github.com/akshar-raaj/ramayanquiz","commit_stats":null,"previous_names":["akshar-raaj/ramayanquiz"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/akshar-raaj/ramayanquiz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshar-raaj%2Framayanquiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshar-raaj%2Framayanquiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshar-raaj%2Framayanquiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshar-raaj%2Framayanquiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akshar-raaj","download_url":"https://codeload.github.com/akshar-raaj/ramayanquiz/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshar-raaj%2Framayanquiz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32587820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"ssl_error","status_checked_at":"2026-05-03T22:09:10.534Z","response_time":103,"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":["api","mongodb","postgresql","python","rabbitmq"],"created_at":"2024-12-01T12:25:30.961Z","updated_at":"2026-05-03T22:34:11.153Z","avatar_url":"https://github.com/akshar-raaj.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overview\n\n[![Linting](https://github.com/akshar-raaj/ramayanquiz/actions/workflows/linting.yml/badge.svg)](https://github.com/akshar-raaj/ramayanquiz/actions/workflows/linting.yml)  [![Unit Tests](https://github.com/akshar-raaj/ramayanquiz/actions/workflows/unit_tests.yml/badge.svg)](https://github.com/akshar-raaj/ramayanquiz/actions/workflows/unit_tests.yml) [![Test Coverage](https://github.com/akshar-raaj/ramayanquiz/blob/master/coverage.svg)](https://github.com/akshar-raaj/ramayanquiz/actions/workflows/code_coverage.yml)\n\nAn application at the intersection of my 3 interests:\n- Software Engineering\n- Quizzing\n- Ramacharitamanas(रामचरितमानस)\n\nThis application drives [api.ramayanquiz.com](https://api.ramayanquiz.com/_health). See [API Docs](https://api.ramayanquiz.com/docs).\n\n## Tech Stack\n\n![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54) ![FastAPI](https://img.shields.io/badge/FastAPI-005571?style=for-the-badge\u0026logo=fastapi)\n![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white)\n![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge\u0026logo=redis\u0026logoColor=white)\n![RabbitMQ](https://img.shields.io/badge/Rabbitmq-FF6600?style=for-the-badge\u0026logo=rabbitmq\u0026logoColor=white)\n![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge\u0026logo=githubactions\u0026logoColor=white)\n\n| Category | Option |\n|----|-----|\n| Programming Language | Python, a mature language enabling Rapid Application Development. Let's talk about Duck Typing! |\n| API Framework | FastAPI, a modern and performant API framework |\n| Transactional Database | PostgreSQL, battle-tested relational database |\n| Standby Database | MongoDB, a document database, allows RAD at the expense of data integrity and guarantees |\n| Message Broker | RabbitMQ, flexible message broker with more capabilities than a simple message queue |\n| Search Engine | Elasticsearch, a full-text search engine with built-in support for stop-words removal, stemming, lemmatization, synonym search, similarity and more |\n| Workflow Management | Airflow |\n| SQL Toolkit | SQLAlchemy |\n| Unit Testing | Pytest, simple and extensible testing framework |\n| CI/CD | Github Action, allows CI and CD. Simpler than Jenkins |\n| OpenAI | OpenAI API for translating between different languages, ChatGPT! |\n\n## Setup\n\nEnsure the relevant data stores exist. We need the following:\n- PostgreSQL\n- MongoDB\n- RabbitMQ\n\nThe following Docker commands should help you setup these data stores if they don't already exist.\n\n    docker container run --name ramayanquiz-postgres -p 5432:5432 --volume ramayanquiz-postgres:/var/lib/postgresql/data -d postgres\n\n    docker container run --name ramayanquiz-mongo -p 27017:27017 --volume ramayanquiz-mongo:/data/db -d mongo\n\n    docker run --name ramayanquiz-rabbitmq -p 5672:5672 -p 15672:15672 -v ramayanquiz-rabbitmq:/var/lib/rabbitmq -d rabbitmq:3.13-management\n\nEnsure to create a `.env` file with appropriate values. Use `.env.example` for reference.\n\nStart the web application container.\n\n    docker run -d --name ramayanquiz -p 8000:8000 -v .:/app ramayanquiz\n\nEnsure the container is running properly. Check http://localhost:8000/docs.\n\n## Feature List\n- Database tables for entities - Done\n- API to create questions - Done\n- Add questions through csv upload - Done\n- Secure the API - Done\n- Persist user answers to localstorage - Done\n- User answer report:\n  - Pie chart: Unattempted, attempted\n  - Pie chart: Correct, Incorrect - Done\n  - Bar chart: Correct, incorrect for difficulty levels - Done\n  - Bar chart: Correct, incorrect for tags\n  - Stacked Bar chart: Total, correct, incorrect for difficulty levels\n- Share report on Linkedin, Twitter and Facebook\n- Hindi translation - Done\n- Allow users to upvote or downvote a question\n- Allow users to contribute a question\n- Before contributing, search if a similar question exists\n- Give an information icon in front of each question. This gives context about this question.\n\n## More\nAlong with PostgreSQL, we will also use MongoDB. This is only for demonstration purpose to understand which things are easy/difficult in PostgreSQL vs MongoDB.\n\nCompare Elasticsearch with Postgres full text search.\n\nCompare Redis with memcache and see if Redis in-built data structures provide an advantage compared to storing everything as JSON dump.\n\nIntroduce an Analytical database to perform analytical queries which can generate reports.\n\nImplement websocket so that any new question added starts showing up immediately.\n\nAdd ML to predict the kanda and difficulty for a question\n\nImplement suggestions and question recommendations based on earlier questions attempted.\n\nMobile Application\n\nAdd integration tests, end to end tests including database calls","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshar-raaj%2Framayanquiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakshar-raaj%2Framayanquiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshar-raaj%2Framayanquiz/lists"}