{"id":19351853,"url":"https://github.com/marcoscalitas/cs50w-wiki","last_synced_at":"2025-04-23T00:25:08.851Z","repository":{"id":254841110,"uuid":"847697634","full_name":"marcoscalitas/CS50w-wiki","owner":"marcoscalitas","description":"An online encyclopedia project similar to Wikipedia, developed with Django and Markdown. Allows for viewing, creating, editing, and searching entries, operating locally without the need for a server. Created as part of Harvard University's CS50's Web Programming with Python and JavaScript course.","archived":false,"fork":false,"pushed_at":"2024-10-08T15:52:59.000Z","size":634,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-06T16:14:22.831Z","etag":null,"topics":["bootstrap","css","django","html","javascript","markdown","python"],"latest_commit_sha":null,"homepage":"https://cs50w-wiki-ruddy.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcoscalitas.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":"2024-08-26T11:24:30.000Z","updated_at":"2024-12-31T13:46:06.000Z","dependencies_parsed_at":"2024-08-26T14:08:44.520Z","dependency_job_id":"d46251b4-5579-4aec-ae2b-ba2c894cebcf","html_url":"https://github.com/marcoscalitas/CS50w-wiki","commit_stats":null,"previous_names":["marcoscalitas/cs50w-wiki"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoscalitas%2FCS50w-wiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoscalitas%2FCS50w-wiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoscalitas%2FCS50w-wiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoscalitas%2FCS50w-wiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcoscalitas","download_url":"https://codeload.github.com/marcoscalitas/CS50w-wiki/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240465125,"owners_count":19805845,"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":["bootstrap","css","django","html","javascript","markdown","python"],"created_at":"2024-11-10T04:37:27.261Z","updated_at":"2025-02-24T10:41:45.298Z","avatar_url":"https://github.com/marcoscalitas.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CS50's Web Project 1 - Wiki\n\n- [CS50's Web Project 1 - Wiki](#cs50s-web-project-1---wiki)\n  - [Overview](#overview)\n  - [Features](#features)\n    - [404 Error Page Setup](#404-error-page-setup)\n  - [Demo](#demo)\n  - [Technologies](#technologies)\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n  - [Project Structure](#project-structure)\n\n## Overview\nThis is the **\"Wiki\"** project, developed as part of the CS50's Web Programming with Python and JavaScript course. This project is an online encyclopedia similar to Wikipedia, where users can view, create, edit, and search entries using Markdown.\n\n## Demo\n\u003ca href=\"https://cs50w-wiki.onrender.com/\" target=\"_blank\"\u003ehttps://cs50w-wiki.onrender.com/\u003c/a\u003e\n\n## Features\n- **Home Page:** Lists all encyclopedia entries and allows navigation to any of them.  \n  ![Home Page](./encyclopedia/static/encyclopedia/img/all-pages.png)\n\n- **Entry Page:** Displays the content of a specific encyclopedia entry.  \n  ![Entry Page](./encyclopedia/static/encyclopedia/img/entry-page.png)\n\n- **Search:** Facilitates searching for entries, returning relevant results.  \n  ![Search](./encyclopedia/static/encyclopedia/img/search.png)\n\n- **New Page:** Allows the creation of new entries, provided that the title of the new entry does not already exist.  \n  ![New Page](./encyclopedia/static/encyclopedia/img/new-page.png)\n\n- **Edit Page:** Provides the option to edit the content of any existing entry.  \n  ![Edit Page](./encyclopedia/static/encyclopedia/img/edit-page.png)\n\n- **Random Page:** Redirects the user to a random entry in the encyclopedia.\n\n- **Markdown to HTML Conversion:** Entries are converted from Markdown to HTML when displayed.\n\n### 404 Error Page Setup\nThe project includes two approaches for rendering the 404 error page:\n\n- **Custom Middleware:** A custom middleware displays a 404 error page when the debug mode is enabled.\n\n- **Production Setup:** When the project is deployed to a production server and the debug mode is disabled, Django uses its default configuration to display a 404 error page.  \n  ![404 Error](./encyclopedia/static/encyclopedia/img/404.png)\n\n## Technologies\n- **Front-end:** \n  - HTML \n  - CSS\n  - Bootstrap\n  - JavaScript\n\n\u003cdiv style=\"display:flex; align-item:center; gap:12px;\"\u003e \n  \u003cimg src=\"https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge\u0026logo=html5\u0026logoColor=white\" alt=\"Html\" aline=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/CSS3-1572B6?style=for-the-badge\u0026logo=css3\u0026logoColor=white\" alt=\"Html\" aline=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white\" alt=\"Html\" aline=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge\u0026logo=javascript\u0026logoColor=black\" alt=\"Html\" aline=\"center\"\u003e\n\u003c/div\u003e\n\n- **Back-end:**\n  - Python\n  - Django\n\n\u003cdiv style=\"display:flex; align-item:center; gap:12px;\"\u003e \n  \u003cimg src=\"https://img.shields.io/badge/Python-14354C?style=for-the-badge\u0026logo=python\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Django-092E20?style=for-the-badge\u0026logo=django\u0026logoColor=white\" /\u003e\n\u003c/div\u003e\n\n## Requirements\n- Python 3.12.5\n- pip 24.2\n- Django 5.1\n- markdown 2 2.5.0\n\n## Installation\n1. Clone the repository to your local environment:\n   ```bash\n   git clone \u003crepository-URL\u003e\n\n2. Create and activate a virtual environment:\n   ```bash\n   python -m venv .venv\n   source .venv/bin/activate  # For Unix or MacOS systems\n   .\\.venv\\Scripts\\activate  # For Windows PowerShell\n   ```\n\n3. Install the required dependencies with the command:\n   ```bash\n   pip install \u003cdependency-name\u003e or pip install -r requirements.txt\n   ```\n\n4. Start the Django development server:\n   ```bash\n   python manage.py runserver \n   ```\n\n5. Access the application in your browser at  `http://127.0.0.1:8000/`.\n\n## Project Structure\n- `encyclopedia/` - Main Django application containing all the encyclopedia functionalities.\n- `middleware/` - Directory containing the custom middleware for displaying the 404 error page.\n- `static/` - Directory for static files such as CSS, JavaScript, and images.\n- `templates/` - Contains the HTML templates used to render the encyclopedia pages.\n- `forms.py` - Contains the forms used to create and edit  entries.\n- `urls.py` - Defines the application's routes and maps URLs to corresponding views.\n- `util.py` - Utility file with helper functions.\n- `views.py` - Contains the views responsible for processing requests and rendering the appropriate pages.\n- `apps.py` - Django application configuration.\n- `entries/` - Directory storing all encyclopedia entries in Markdown files.\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcoscalitas%2Fcs50w-wiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcoscalitas%2Fcs50w-wiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcoscalitas%2Fcs50w-wiki/lists"}