Suite Dreams is an automated dorm allocation application designed to streamline the process of assigning dorm rooms and roommates to college students. By utilizing a sophisticated matching algorithm, the application ensures that students are matched with compatible roommates and assigned to preferred dorm rooms, enhancing student satisfaction and reducing administrative workload.
- User Authentication: Secure login system using Firebase Authentication.
- Student Application Form: Allows students to submit housing preferences and roommate requests.
- Matching Algorithm: Calculates compatibility scores based on student preferences.
- Room Assignment: Automatically assigns students to rooms and roommates.
- Admin Dashboard: Enables administrators to monitor occupancy and manage room assignments.
- Real-Time Updates: Keeps user interfaces synchronized with the database changes.
- Accessibility Support: Accommodates students with specific accessibility needs.
Suite Dreams follows the Model-View-Controller (MVC) architectural pattern:
- Model: Handles data management using Firebase/Firestore. Includes data models and the
data.pymodule for database interactions. - View: Consists of the user interface built with HTML, CSS, JavaScript, and Bootstrap. Renders templates and captures user input.
- Controller: Implements application logic using Flask. Processes user requests, interacts with the model, and returns responses.
The matching algorithm employs a Pipe and Filter architecture, processing student applications through sequential stages:
- Data Collection: Retrieves student applications from the database.
- Data Validation: Ensures completeness and correctness of applications.
- Grouping Students: Forms roommate groups based on preferences.
- Compatibility Scoring: Calculates scores using weighted criteria.
- Room Assignment: Assigns students to rooms based on compatibility and availability.
- Notification: Communicates assignment results to students.
- Frontend:
- HTML5, CSS3, JavaScript
- Bootstrap for responsive design
- Backend:
- Python
- Flask framework
- Database:
- Firebase Firestore for real-time data storage
- Firebase Authentication for secure user login
- External Services:
- Google Forms and Sheets for data collection
- Version Control:
- Git and GitHub for code collaboration
- Python 3.x installed on your system
- Firebase account with Firestore and Authentication set up
- Google Cloud credentials for Firebase Admin SDK
-
Clone the Repository
-
Create a Virtual Environment
-
Set Up Firebase Credentials
- Place your
serviceAccountKey.jsonfile (Firebase Admin SDK key) in the project root directory. - Ensure your Firebase project is properly configured with Firestore and Authentication.
- Place your
-
Configure Environment Variables
-
Initialize the Database
- Run any necessary scripts to set up your Firestore database structure.
-
Run the Application
-
Logining In
- Visit the login page and sign with your school email and password.
-
Fill Out the Application Form
- Complete the housing application form, specifying your dorm preferences and roommate requests.
-
Submit Preferences
- Provide information on your lifestyle preferences for compatibility scoring.
-
Receive Assignment
- After processing, view your dorm and roommate assignment in your dashboard.
-
Login to Admin Dashboard
- Access the admin panel using your administrator credentials.
-
Monitor Applications
- View submitted applications and track occupancy rates.
-
Manage Assignments
- Override or adjust room assignments as needed.
-
Generate Reports
- Export data and generate reports on housing assignments.
We welcome contributions from the community. To contribute:
-
Fork the Repository
- Click the "Fork" button at the top right of the repository page.
-
Commit Your Changes
git commit -m "Add your message here" -
Push to Your Fork
git push origin feature/YourFeature
-
Submit a Pull Request
- Go to the original repository and create a pull request from your fork.
- Follow the existing code style and structure.
- Write clear commit messages.
- Include documentation for new features.
- Ensure all tests pass before submitting.
- Kyren Stephenson: Frontend Developer, UI/UX Designer
- Jonathan Fasano: Documentation Coordinator, API Integration Specialist, Frontend Developer
- Alexes Pagan: Database Manager, Firebase Expert
- John Doyle: QA Tester, Quality Assurance Lead
- Parsa Jafaripour: Project Manager, Algorithm Developer, Matching Logic Specialist
For any inquiries or support, please contact us at:
- Email: parsajafaripour@gmail.com