{"id":18266130,"url":"https://github.com/alexandrabaturina/flashcards","last_synced_at":"2026-06-18T16:32:04.180Z","repository":{"id":119258492,"uuid":"513303041","full_name":"alexandrabaturina/flashcards","owner":"alexandrabaturina","description":"Django app to create flashcards and to practice with them.","archived":false,"fork":false,"pushed_at":"2022-07-15T19:45:32.000Z","size":50,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T01:47:25.364Z","etag":null,"topics":["d3-visualization","django-backend","javascript-frontend","responsive-layout"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/alexandrabaturina.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}},"created_at":"2022-07-12T21:56:44.000Z","updated_at":"2022-07-15T23:14:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"07c5ea59-624d-4536-8ebb-5428eea5b4d8","html_url":"https://github.com/alexandrabaturina/flashcards","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexandrabaturina/flashcards","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrabaturina%2Fflashcards","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrabaturina%2Fflashcards/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrabaturina%2Fflashcards/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrabaturina%2Fflashcards/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexandrabaturina","download_url":"https://codeload.github.com/alexandrabaturina/flashcards/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrabaturina%2Fflashcards/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34499405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["d3-visualization","django-backend","javascript-frontend","responsive-layout"],"created_at":"2024-11-05T11:22:06.276Z","updated_at":"2026-06-18T16:32:04.155Z","avatar_url":"https://github.com/alexandrabaturina.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CS50w Capstone: Flashcards\n## Overview\nThe current repo contains ***Flashcards*** app which is a website for creating flashcards and practicing with them.\n\nThis project is built as capstone for [CS50's Web Programming with Python and JavaScript](https://learning.edx.org/course/course-v1:HarvardX+CS50W+Web/home) course provided by edX platform.\n\n***Flashcards*** app meets the following requirements:\n* To be sufficiently distinct from the other projects in this course and more complex than those\n  * Unlike other projects of this course, ***Flashcards*** allows users to download data from external files\n  * ***Flashcards*** app provides data visualization using [d3 library](https://d3js.org/)\n* To utilize Django (including at least one model) on the back-end\n* To utilize JavaScript on the front-end\n* To be mobile-responsive\n\nVerify the deployment on an [Amazon EC2](https://aws.amazon.com/pm/ec2/?trk=36c6da98-7b20-48fa-8225-4784bced9843\u0026sc_channel=ps\u0026sc_campaign=acquisition\u0026sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text\u0026s_kwcid=AL!4422!3!467723097970!e!!g!!amazon%20ec2\u0026ef_id=CjwKCAjwoMSWBhAdEiwAVJ2ndpvWqiV2joPkKLlSlkk8fncn_1dQgN7BBFv4JGrMf2U25AHej3CPqxoCnoUQAvD_BwE:G:s\u0026s_kwcid=AL!4422!3!467723097970!e!!g!!amazon%20ec2) instance with [Gunicorn](https://gunicorn.org/) and [Nginx](https://www.nginx.com/) [here](http://54.191.208.167/).\n\n## Features\nThe ***Flashcards*** app allows users to:\n* Create stacks and populate them with flashcards:\n  * Created manually\n  * Downloaded form properly formatted *csv* file\n\u003e To import flashcards from *csv* file, it has to use **semicolon (;)** as delimiter:\n\u003e ```\n\u003e question;answer\n\u003e ...\n\u003e ```\n\u003e Using **semicolon (;)** in question or answer is not allowed.\n* Share stacks with other users\n* Save stacks shared by other users for practicing\n* Practice using flashcards\n* View practice report after practicing each stack\n\n![image](https://user-images.githubusercontent.com/53233637/118175392-e58bec80-b3e4-11eb-9b30-ea60f4928d14.png)\n\n* Trace their progress\n  * View up to 6 top practice categories on a donut chart\n  * For each practiced stack, view bar chart along with the following data:\n    * Total number of attempts\n    * Average time spent\n    * Average percentage of correct answers\n\n![image](https://user-images.githubusercontent.com/53233637/118175234-b2495d80-b3e4-11eb-83a7-98fa46b2449b.png)\n\n## Repo Contents\n```\ncapstone/\n  __init__.py\n  asgi.py                  # ASGI config for capstone project\n  settings.py              # Django settings for capstone project\n  urls.py                  # capstone URL configuration\n  wsgi.py                  # WSGI config for capstone project\nflashcards/\n  migrations/              # applicable migrations\n    __init__.py\n    ...\n  static/\n    flashcards/\n      js/                  # project-related JavaScript files\n        all-stacks.js\n        ...\n        user-stacks.js\n      css/                 # project-related css files\n        home.css\n        ...\n        styles.css\n   templates/              # project-related html templates\n      flashcards/\n        all-stacks.html\n        ...\n        user-stacks.html\n    __init__.py    \n    admin.py               # file containing registered models\n    apps.py                # file to register project-related apps\n    models.py              # file containing models\n    tests.py               # file to create tests\n    views.py               # file containing views\n  db.sqlite3               # application database\n  manage.py                # Django command-line utility for administrative tasks\n  \ntest.csv                   # properly formatted csv file to test downloading flashcards from file\n```\n## Dependencies\nThe ***Flaschcards*** app is built using Django framework. To install *Django* via terminal, use the following command.\n```sh\n$ pip3 install Django\n```\n### Dev Dependencies\nTo visualize user progress, [d3 library](https://d3js.org/) is used.\n## Getting Started\n### Running Locally\nTo run ***Flashcards*** locally,\n1. Clone this repo.\n2. ```cd``` into project directory.\n3. Start the *Django* web server using the following command:\n```sh\n$ python manage.py runserver\n```\n4. Access ```127.0.0.1:8000``` in your browser.\n### Resetting Database\nThe repo contains test database. To reset database,\n1. Delete *db.sqlite3* file.\n2. Run the following command:\n```sh\n$ python manage.py flush\n```\n\n## Deployment\nThe ***Flashcards*** app is deployed on an [Amazon EC2](https://aws.amazon.com/pm/ec2/?trk=36c6da98-7b20-48fa-8225-4784bced9843\u0026sc_channel=ps\u0026sc_campaign=acquisition\u0026sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text\u0026s_kwcid=AL!4422!3!467723097970!e!!g!!amazon%20ec2\u0026ef_id=CjwKCAjwoMSWBhAdEiwAVJ2ndpvWqiV2joPkKLlSlkk8fncn_1dQgN7BBFv4JGrMf2U25AHej3CPqxoCnoUQAvD_BwE:G:s\u0026s_kwcid=AL!4422!3!467723097970!e!!g!!amazon%20ec2) instance with [Gunicorn](https://gunicorn.org/), [Nginx](https://www.nginx.com/), and [Supervisor](http://supervisord.org/). Verify the deployment [here](http://54.191.208.167/).\n\nAmazon EC2 instance has the following characteristics:\n* Platform: Ubuntu 20.04.4\n* Public IPv4 address: ```54.191.208.167```\n\n### Gunicorn Configuration\nGunicorn configuration is stored in ```/etc/supervisor/conf.d/gunicorn.conf``` file.\n```\n[program:gunicorn]\ndirectory = /home/ubuntu/deploy-flashcards\ncommand = /home/ubuntu/env/bin/gunicorn --workers 3 --bind unix:/home/ubuntu/de\u003e\nautostart = true\nautorestart = true\nstderr_logfile = /var/log/gunicorn/gunicorn.err.log\nstdout_logfile = /var/log/gunicorn/gunicorn.out.log\n\n[group:guni]\nprograms:gunicorn\n```\n\n### Nginx Server Configuration\nNginx server configuration is stored in ```/etc/nginx/sites-available/default``` file.\n```\n# Default server configuration\n\nserver {\n        listen 80 default_server;\n        listen [::]:80 default_server;\n        server_name 54.191.208.167;\n\n        location / {\n                include proxy_params;\n                proxy_pass http://unix:/home/ubuntu/deploy-flashcards/app.sock;\n        }\n        \n        # Serving static content\n        location /static/ {\n                autoindex on;\n                alias /home/ubuntu/deploy-flashcards/flashcards/static/;\n        }\n```\n\n## Authors\nAlexandra Baturina\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandrabaturina%2Fflashcards","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexandrabaturina%2Fflashcards","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandrabaturina%2Fflashcards/lists"}