Technologies Used

  1. Python Anywhere (Development): PythonAnywhere is a Platform-as-a-Service (PaaS) specifically for Python applications. It conceals most of the server administration, providing a managed environment that simplifies deployment. We selected PythonAnywhere for initial testing because it supports Django and provides a simple environment in which to experiment without extreme system configuration.

  2. DigitalOcean (Deployment): DigitalOcean is a cloud hosting service that offers fuss-free App hosting. It has a nice mix of scalability and maintainability, making it easy for our client to use for a long-term project with little technical background. We discovered it via developer forums, Django deployment guides, and word of mouth. DigitalOcean has existed since 2011 and is widely used by startups, small businesses, and individual developers to host web applications, including Django applications.

  3. reCAPTCHA (Django all-auth): Django Simple CAPTCHA is a Python library that provides extremely simple, yet highly customizable CAPTCHA functionality for Django applications. It offers multiple types of challenges, such as simple math problems and random character inputs, which developers tailor to the needs of a project. It is simple and flexible, which makes it an accessible option for smaller-scale projects.

  4. MySQL: MySQL is a classic open source relational database management system and is great for storing, managing, and organizing large amounts of data in a structured manner through tables and rows. Everything in MySQL is stored in tables that then have relations to each other and can be queried to provide different information based on the query format. We will be using MySQL as the main database for our project to hold all relevant data.

  5. Django ORM: We will use the built-in django ORM for the use of general querying. This ORM has been proven to be very flexible with growing datasets and provide basic filtering and querying within these database fields. It is powerful yet straightforward for general querying. It is backed up with the strong integration with the django framework. It has greater flexibility and supports growing datasets which will be essential for our project.

Additional - Use Case Diagram

For a bit more of a practical view of our system, and for those interested more in how our system should ulitmately function and how features work together, the image below is our use case diagram.

  • Green: The feature has been completed and implemented!
  • Blue: The feature has been paritally implemented, or is almost done but needs some minor tweeks.
  • Yellow: The feature will be implemented.
  • Use Case Diagram Image

    Figure 1: Use Case Diagram. The image displays how features in the system work together.

    Implementation Notes

    When it comes to the development process, we split the project into four key components, those being: account and access control, article management, peer reviews, and credibility and citation tools. The sectioning of key functionality was done to better support development and keep the team focussed on specific features as they relate to our primary project focus. Now that our core functionality has been implemented, the addition of future features will follow this general development process:

  • Confirming feature requirements with our client.
  • Interating on the feature and adjusting it, focussing on ease of use and functional implementation.
  • Showing the feature off to our client for review and feedback.
  • Iterating on the feature.
  • Account & Access Control

    • Create Account: Users register with basic information; accounts remain pending until verified.
    • Request Access: Sends a notification to the advisor/guarantor for approval.
    • Login: Handled through Django's authentication system.
    • Verify Account (Advisor): Advisors approve new users through a simple dashboard.

    Article Management

    • Post Articles: Users upload PDFs or enter article metadata, stored in the database.
    • Search Articles: Search tool queries titles, authors, and tags through Django ORM.
    • View Articles: Displays metadata, links, and associated peer reviews.
    • Remove Article (Admin): Admin can remove or archive articles for moderation.

    Peer Reviews

    • Write Peer Review: Registered users submit reviews through a validated form.
    • Validate Peer Review (Advisor): Advisors approve or return reviews before they become public.
    • View Peer Review: Users can read approved peer reviews linked to each article.

    Credibility & Citation Tools

    • Flag Article as AI: Users can report suspected AI-generated content; flags are reviewed by admins.
    • Copy Citation: One-click citation copying using JavaScript.
    • Save Citation: Logged-in users store citations in a personal saved list.

    Project Documents

    Team Inventory

    The team inventory is a summary of the teams skillset and strengths.

    Open Team Inventory

    Team Standards

    The team standards document details the agreement between the team when it potential conflict resultion, how to handel meetings, and other general team agreements for cooperation.

    Open Team Standards Doc

    Tech Feasibility

    The technology feasibility document holds information about our original desgin plan, possible ways we could implement solution(s), various testing we did, and the reasoning behind our chosen implementation.

    Open Tech Feasibility Doc

    Design Review

    The design review presentation was the presentation given during the Engineering Fest, Fall semseter. We talked about the project itself, why it matters, what we had done thus far, and what we would do in the future.

    Open Design Review Presentation

    Tech Demo Flight Plan

    The tech demo flight plan is the plan by which our project was initally presented to our mentor.

    Open Tech Demo Plan Doc

    Project Requirements

    The project requirements document details project specifics and necessities. The requirements specified were decided through discussions with the client.

    Open Project Requierments Doc

    Mini Introduction

    This is a mini introduction of the project, presented near the start of our first semester in Capstone. It very generally talks about the problem the project addresses and our proposed solution.

    Open Mini Intro