An open-source web app developed to help students at the University of Florida plan for classes next semester. Click Here To View Swamp Scheduler!
Made with ❤️ by UF's Open Source Club (@ufosc).
- [Project Description](#Project Description)
- Features
- Setup
- Usage
- Contribution
- Maintainers
- License
**What is Swamp Scheduler? Swamp Scheduler is a web application designed for University of Florida students to plan their academic schedules. Through Swamp Scheduler, students can view and organize their semester course structure, allowing them to adjust their schedules according to their preferences. Swamp Scheduler also generates potential schedules for students to choose from, allowing course shopping to be a much smoother and easier process. The application provides real-time course data, including information on course credits, professors, section numbers, and class times, all of which are essential for creating an optimal schedule. Additionally, users can log into their accounts to save their schedules.
- Course Explorer: Explore courses offered at the University of Florida
- Find courses by course code, title, or instructor
- Course Selections: Make multiple courses selections with backup options.
- Pick which classes you want (and remove which sections you don't)
- Schedule Generator: View and compare all the possible schedules and pick the one that fits your needs and wants.
- View color-coded schedules that show what your day-to-day
struggleworkload will be
- View color-coded schedules that show what your day-to-day
- Generate a Set Range of Schedules: Allowing users to generate x possible schedules.
- View all your schedules an choose the one you want!
- Apply Gaps between sections: Customize your generations through gaps.
- Apply gaps to your generated schedules for further customization and ease.
Make sure to have npm installed.
Clone the repository to your local machine:
git clone <repository-url>Enter the web-app directory (/app) and install the dependencies (React, Tailwind CSS, etc.):
cd app
npm install- In the web-app directory:
- Development: Run
npm run devto run the development server locally (with hot reloading). - Production: Run
npm run buildto build the app to/app/dist.
- Development: Run
Before you can make good contributions, you need to know a little bit about what we're using and how the web-app works. After that, you should be ready to get your hands dirty!
This project is built using a variety of exciting technologies, including:
- TypeScript: The JavaScript programming language with a typing system (for
Courseobjects, etc.)- Familiarize yourself with TypeScript’s documentation to understand the basics and best practices.
- React: A JavaScript library for building dynamic user interfaces.
- The official React documentation is a great resource for learning about component-based architecture and state management.
- Tailwind CSS: A utility-first CSS framework.
- Review the Tailwind CSS documentation for understanding utility-first styling and theming.
- Vite: Simply used as a build tool and development server.
- Learn how to set up, configure, and use Vite from Vite’s official guide.
If you are unfamiliar with the tech stack, be sure to check out these free resources to learn!
If you need help, don't be afraid to ask in the OSC discord
-
- Indentation and Spacing: Use consistent indentation (e.g., 2 or 4 spaces) to enhance readability. Include spaces around operators and after commas to improve clarity.
- Naming Conventions: Follow a consistent naming convention (e.g., camelCase for variables and functions, PascalCase for classes) across your codebase.
- Use Descriptive Names: Choose variable, function, and class names that clearly describe their purpose or behavior without needing additional comments.
- Limit Line Length: Aim to keep line length under 80-100 characters for better readability across various editors and tools.
- Function Size: Keep functions short and focused. Each function should do one thing and do it well. A good rule of thumb is that if you can’t summarize what a function does in a simple sentence, it might be doing too much.
- Comments and Documentation: Use comments to explain "why" instead of "what." Use documentation blocks for functions and modules to describe their purpose, parameters, and return values.
- Consistent Syntax Style: Be consistent with your syntax style, such as the use of arrow functions vs. traditional functions in JavaScript/TypeScript, or the placement of braces.
Be sure to read (yes, read) some of our code. Everything works better when we all understand what we're talking about.
SwampScheduler's documentation is a work-in-progress.
There are lots of things that can be done, and a lot of them are on our back-burner.
Take a look at what issues (enhancements, bug fixes, and ideas) are open. If you find one you like, assign yourself and be sure to talk to other people about what you're doing (it helps us, the maintainers best allocate our resources).
We're your Technical Leads, Product Managers, and Mentors all-in-one:
GNU Affero General Public License v3.0