{"id":17005368,"url":"https://github.com/cbedroid/cs50-wiki","last_synced_at":"2025-04-19T14:33:22.491Z","repository":{"id":101937470,"uuid":"308140092","full_name":"cbedroid/CS50-Wiki","owner":"cbedroid","description":"A Django Wiki Project for Harvard University CS50 Web Development with Python and JavaScript ","archived":false,"fork":false,"pushed_at":"2021-11-16T08:13:22.000Z","size":165,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T08:43:31.194Z","etag":null,"topics":["cs50","cs50w","cs50web","cs50web-project1","css","django","html","javascript","markdown","python","wiki","wikipedia","wikitext"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/cbedroid.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":"2020-10-28T21:02:12.000Z","updated_at":"2023-07-24T20:12:39.000Z","dependencies_parsed_at":"2023-03-13T15:25:00.928Z","dependency_job_id":null,"html_url":"https://github.com/cbedroid/CS50-Wiki","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbedroid%2FCS50-Wiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbedroid%2FCS50-Wiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbedroid%2FCS50-Wiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbedroid%2FCS50-Wiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cbedroid","download_url":"https://codeload.github.com/cbedroid/CS50-Wiki/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249715248,"owners_count":21315005,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cs50","cs50w","cs50web","cs50web-project1","css","django","html","javascript","markdown","python","wiki","wikipedia","wikitext"],"created_at":"2024-10-14T04:46:09.096Z","updated_at":"2025-04-19T14:33:22.485Z","avatar_url":"https://github.com/cbedroid.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# CS50 Wiki\n\n\u003cdiv style=\"display:flex;flex-direction:row; justify-content; space-between;width:100%\"\u003e \n \u003ch3\u003e\u003cb\u003eWiki\u003c/b\u003e - Wikipedia-like online encyclopedia\u003c/h3\u003e\n  \u003ch3\u003e:rocket: \u003ca  target=\"_blank\" href=\"https://cbedroid-wiki.herokuapp.com\"\u003e Run Wiki Live \u003c/a\u003e\u003c/h3\u003e  \n\u003c/div\u003e\n\nWelcome to my [**Harvard University CS50 Wiki Project**](https://online-learning.harvard.edu/course/cs50s-web-programming-python-and-javascript?delta=0). I invite you to explore this repository and check out some of the cool features. In our project, our class was instructed to created a similar clone website to **Wikipedia** called **Wiki** using **Python's Django framework**.\n\nFor details on the `Specification` for this project, Please take a look at the [**Specification**](#specification) section below.\n\n\n##\n\n# Introduction\n\n ## So..what is this Wiki thing you keep babbling about :thinking: ?\n\nThis Wiki thing.. is an online encyclopedia much like [**Wikipedia**](https://www.wikipedia.org/). It contains numerous interesting articles about different topics. It's open-sourced so anyone can create and edit its entries. It's the 15th most popular website in the world. Oh yeah, did I mention it's **FREE**.\n\n In this project, our class was asked to design a similar website like Wikipedia and implement many of its original features. One of the most prominent features of this assignment was the use of [**`WikiText`**](https://en.wikipedia.org/wiki/Help:Wikitext), the markup language used to create entries on Wikipedia. In addition to building this website using `HTML`, `CSS`, and `JavaScript`, we had to make our own *`WikiText`* syntax using [**`Github's Markdown`**](https://docs.github.com/en/free-pro-team@latest/github/writing-on-github/basic-writing-and-formatting-syntax)  along with creating Wiki entries for your website.\n\n*For full detail description of CS50 Wiki, visit:* [**CS50 Wiki Full Description**](https://cs50.harvard.edu/web/2020/projects/1/wiki/#:~:text=web50/projects/2020/x/wiki)\n\n\n---\n# TechStack\nHere are some of the tools used in this project.\n- Python\n- Django\n- HTML\n- CSS\n- Javascript\n- Bootstrap 4\n---\n\n# Prerequisites\n- [**Python**](https://www.python.org) \u003e= 3.6\n- [**Django**](https://www.djangoproject.com/download/) \u003e= 3.1.2\n\n# Setup\n\n- **Clone this Repo (Wiki branch)**\n  ``` bash\n   git clone https://github.com/cbedroid/CS50-Wiki.git\n  \n   # Change directory into repository folder\n   cd CS50-Wiki \n  ```\n\n- **Setup up virtual environment**\n ``` bash\n   \n   # If virtualenv is already installed on your system, skip this step here \n   apt-get install virtualenv \n\n   # Setup virtual env\n   virtualenv venv\n  \n   # Activate virtual environment\n   source venv/bin/activate\n  ```\n\n- **Install python requirements from `requirements.txt`**\n  ``` bash\n    pip install -r requirements.txt\n  ```\n\n- **Start Django server**\n  ``` bash\n  # First makemigrations and migrate to create database for the Django server\n  python manage.py makemigrations\n\n  python manage.py migrate\n\n  # run server\n  python manage.py runserver\n\n  # Finally open your internet browser to localhost port: 8000\n\n  localhost:8000 # copy this into your browser\n\n  ```\n\n\n\n# Specification\n\n*For full detail description of CS50 Wiki, visit:* [**CS50 Wiki Full Specification**](https://cs50.harvard.edu/web/2020/projects/1/wiki/#:~:text=web50/projects/2020/x/wiki)\n\nComplete the implementation of your Wiki encyclopedia. You must fulfill the following requirements:\n\n\n- **Entry Page**: Visiting `/wiki/TITLE`, where `TITLE` is the title of an encyclopedia entry, should render a page that displays the contents of that encyclopedia entry.\n  -  The view should get the content of the encyclopedia entry by calling the appropriate `util` function.\n\n  - If an entry is requested that does not exist, the user should be presented with an error page indicating that their requested page was not found.\n\n  - If the entry does exist, the user should be presented with a page that displays the content of the entry. The title of the page should include the name of the entry.\n\n- **Index Page**: Update ***index.html*** such that, instead of merely listing the names of all pages in the encyclopedia, user can click on any entry name to be taken directly to that entry page.\n\n- **Search**: Allow the user to type a query into the search box in the sidebar to search for an encyclopedia entry.\n  - If the query matches the name of an encyclopedia entry, the user should be redirected to that entry’s page.\n\n  - If the query does not match the name of an encyclopedia entry, the user should instead be taken to a search results page that displays a list of all encyclopedia entries that have the query as a substring. For example, if the search query were `Py`, then `Python` should appear in the search results.\n\n  - Clicking on any of the entry names on the search results page should take the user to that entry’s page.\n\n- **New Page**: Clicking ``“Create New Page”`` in the sidebar should take the user to a page where they can create a new encyclopedia entry.\nUsers should be able to enter a title for the page and, in a `textarea`, should be able to enter the Markdown content for the page.\n  - Users should be able to click a button to save their new page.\n  -  When the page is saved, if an encyclopedia entry already exists with the provided title, the user should be presented with an error message.\n  - Otherwise, the encyclopedia entry should be saved to disk, and the user should be taken to the new entry’s page.\n\n - **Edit Page**: On each entry page, the user should be able to click a link to be taken to a page where the user can edit that entry’s Markdown content in a `textarea`.\n   - The `textarea` should be pre-populated with the existing Markdown content of the page. (i.e., the existing content should be the initial `value` of the `textarea`).\n\n   - The user should be able to click a button to save the changes made to the entry.\n\n   - Once the entry is saved, the user should be redirected back to that entry’s page.\nRandom Page: Clicking “Random Page” in the sidebar should take user to a random encyclopedia entry.\n\n- **Markdown to HTML Conversion**: On each entry’s page, any Markdown content in the entry file should be converted to HTML before being displayed to the user. You may use the python-markdown2 package to perform this conversion, installable via ***pip3 install markdown2***.\n  - Challenge for those more comfortable: If you’re feeling more comfortable, try implementing the Markdown to HTML conversion without using any external libraries, supporting headings, boldface text, unordered lists, links, and paragraphs. You may find using **_regular expressions_** in Python helpful.\n\n--- \n\n- Created with :heart: by [Cbedroid](https://github.com/cbedroid)\n\n- For more projects - [Github](https://github.com/cbedroid)\n\n- Follow me on Twitter - [Follow me](https://twitter.com/cbedroid)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcbedroid%2Fcs50-wiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcbedroid%2Fcs50-wiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcbedroid%2Fcs50-wiki/lists"}