Access Amherst is a web application created to connect Amherst College students through organized, accessible, and diverse event updates on campus. The platform provides real-time information on campus events, allowing students to plan their schedules effectively.
- Organized Event Updates: Receive updates on the latest campus events in a streamlined format.
- Interactive Event Map: View real-time events displayed on campus buildings.
- Comprehensive Event Calendar: Get a big-picture view of upcoming events to manage your time effectively.
- Additional Features: Many more features to enhance campus engagement.
To clone and set up the application locally, follow the instructions below.
git clone https://github.com/ac-i2i-engineering/access-amherst.git
cd access-amherst
Create and activate a virtual environment to manage dependencies locally.
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
Navigate to the backend directory and apply migrations to set up the database schema.
cd access_amherst_backend
python manage.py makemigrations
python manage.py migrate
To run the application locally, use the following command:
python manage.py runserver
Visit http://127.0.0.1:8000/
in your browser to view the application.
Access Amherst is designed with a modular, scalable architecture. Below is a high-level architecture diagram illustrating the core components and their interactions.
- EventDB: The central database storing event information accessible to multiple front-end modules.
- Home: Displays the latest events and announcements.
- Dashboard: Provides analytical insights into campus events.
- Map: A geographic interface to see real-time event locations on campus.
- Daily Mammoth: An integration with the campus email system for event notifications.
- The Hub: Search and discovery interface for all campus events.
The following diagram provides a detailed breakdown of the application’s internal components and workflows.
graph TD
subgraph redis ["Redis for Scheduling Tasks"]
F1[Schedule periodic tasks]
F1 --> F2[Execute tasks with Celery]
end
subgraph email_scraper ["Email Scraper"]
F2 --> A1[Fetch Gmail messages]
A1 --> A2[Extract event details with Llama 3.1]
A2 --> A3[Clean data]
end
subgraph rss_scraper ["RSS Scraper"]
F2 --> B1[Fetch RSS feed]
B1 --> B2[Save as XML]
B2 --> B3[Clean data]
end
subgraph database ["Database Operations"]
A3 --> C1["Save as JSON (for debugging)"]
B3 --> C1
C1 --> C2[Check for duplicate events]
C2 --> C3[Save events to database]
end
subgraph backend ["Backend Logic"]
C3 --> D1[Retrieve events]
end
subgraph frontend ["Frontend Logic"]
D1 --> E1[Display events on homepage]
D1 --> E2[Show events on map page]
D1 --> E3[Generate dashboard visualizations]
end
We welcome contributions to improve Access Amherst. Please follow these guidelines:
-
Code Formatting: Ensure your code adheres to the
black
style guidelines. You can format your code by running:python -m black ./
A pre-commit hook is set up to enforce this format.
-
Documentation: For adding or updating documentation, please refer to the Access Amherst Backend Documentation Guide in
docs/
. It includes instructions on using Sphinx to document models and views, creating.rst
files, and previewing the documentation. -
Pull Requests: Before submitting a pull request, ensure that all code is well-documented, tested, and follows our coding standards.
For any questions or further support, please reach out to our team.