Technologies Used
- 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.
- 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.
- 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.
- 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.
- 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.
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:
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.