-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
Here is a guide for setting up DARE.
Please read through the Basic Concepts first. This will lay the groundwork for the rest of the guide.
Then, read through Fields to see all the settings and what they do.
Finally read through the Guiding Questions in order. These include common questions and explanations. They'll kind of guide you step-by-step on how to set up the configuration file.
Be sure to read through everything before running DARE. I know reading can be hard, but I believe in you.
There are three data types you need to know to set up DARE: a boolean, a string, and an array.
A boolean is super simple—it's just true or false. You'd choose true if you want a certain setting to be on,
or false if you want a setting to be off.
A string is a collection of characters. Strings are represented by quotes.
"hello" is a string. "12345" is also a string. "asiud98124*^" too is a string.
An array is a collection of items. Arrays are represented by square brackets [].
Each item in an array is separated by commas.
For example, here is an array of three strings: ["open", "closed", "clopen"].
We will only be dealing with arrays of strings.
The term format we will be using is the same format as the ones in the dropdown boxes on the portal. Here are some example terms:
"2023 Fall De Anza""2025 Winter Foothill"
Notice how each term is in the format <YEAR> <QUARTER> <SCHOOL>.
Something that people usually forget is that terms use the year that they start in. For example, if it is Fall 2025 and you are registering for the winter term, it will actually be Winter 2026 because winter quarter starts in January 2026, not January 2025.
A course is something like MATH 1A or ENGL C1000.
A section is one particular offering of a course. Each section will have its own instructor, meeting time, and meeting location. Some sections have registration restrictions so that only certain groups of students can register.
A CRN is an abbreviation of "Course Registration Number" (also "Course Reference Number"). It is a 5-digit number that is used to register for (or refer to) a specific section. We will be using these a lot throughout the program.
Plenty of courses will have prerequisites, which are courses you need to have taken prior to taking another course.
For example, MATH 1B has a prerequisite of MATH 1A. It is impossible (or at least very difficult) to pass MATH 1B without having knowledge gained in MATH 1A.
Some courses will have corequisites, which are courses you can take alongside the course you want to register for. You can satisfy a corequisite if you have already taken the course before.
For example, PHYS 4A has a corequisite of MATH 1B because the content in MATH 1B will help with PHYS 4A material and vice versa. They help apply and reinforce the other's knowledge.
Before registering for a course, please make sure you have either
- satisfied or will satisfy the prerequisite by the end of the current term or
- will register for the corequisite of a course at the same time you register for the main course.
Sections usually have two rosters: the main roster and the waitlist roster.
The main roster is the list of students that are registered for the section. These students are officially in the section and will be charged for units and all.
The waitlist roster is the list of students that are waitlisted for the section. They are not officially in the section yet. Students can move up in the waitlist if a student from the main roster drops or if a waitlisted student ahead of them drops from the waitlist.
When we say a section is "open," it means there is space in the main roster. When we say a section is "waitlisted," it means the main roster is full, but there is space in the waitlist roster.
Some sections will lack a waitlist roster (economics usually). Some sections will lack both (these are usually special sections).
Some sections of courses are restricted to certain student populations, including but not limited to:
- Umoja
- Puente
- Pride
- Dual Enrollment (high school students)
These are called special sections. Only students who are part of these programs can enroll in these sections.
Any fields marked as not required do not need to show up in the configuration file. If these settings are not found, they will default to the setting in the "Default" column.
Header: [Login]
| Field | Required? | Type | Description |
|---|---|---|---|
cwid |
Yes | String | Your Campus-Wide ID (CWID) |
password |
Yes | String | Your MyPortal password |
Header: [Term]
| Field | Required? | Type | Description | Example |
|---|---|---|---|---|
term |
Yes | String | The term to register for | 2025 Fall De Anza |
Header: [Settings]
| Field | Required? | Type | Description | Allowed Values | Default |
|---|---|---|---|---|---|
display_cwid |
No | Boolean | Display CWID before every line of console output |
true or false
|
true |
enable_logs |
No | Boolean | Save log files to disk |
true or false
|
true |
watch_for_open_seats |
No | Boolean | If any courses are completely full at registration time, continue to watch for open seats and register if any are available |
true or false
|
true |
Header: [Notifications]
| Field | Required? | Type | Description | Default |
|---|---|---|---|---|
enable_notifications |
No | Boolean | Send success/failure notifications via Discord webhook | true |
discord_webhook |
No | String | Your Discord webhook URL. If none provided, no notifications will be sent | — |
Header: [[Course]] (note the double brackets)
| Field | Required? | Type | Description | Default | Example |
|---|---|---|---|---|---|
primary |
Yes | String | The CRN you want to register (or waitlist) first | - | 30937 |
backups |
No | Array of String | Comma-separated list of alternate CRNs to try if the primary is full. These are checked in the order they are listed. Leave blank or omit if you have no backups | - | ["30835", "31350"] |
drop_on_open |
No | String | CRN of a course you are currently registered in that you want to drop if another course opens (in both primary and backups) | - | 30939 |
prioritize_open_seats |
No | Boolean | Register for the course that is the most open (out of primary and backups). Prioritizes fully open courses, then waitlisted courses with the least number of people on the waitlist | false | true |
waitlist |
No | Boolean | If the course is waitlisted, join the waitlist | true | false |
Here is the link to the latest release. Download the one for your operating system and CPU architecture. Once that is done, unzip the file.
If you do not know what your CPU architecture is, you can find the name of your CPU and look it up.
Most Windows machines are on the x64 architecture. You can use the System Information application to check.
If you have a Mac with an M-series chip (released 2020 and later), you are on the ARM64 architecture. If you have a Mac with an Intel chip (released prior to 2020), you are on the x64 architecture.
If you are running Linux, you should already know what you are on.
First, make sure you have unzipped the .zip file.
In the resulting folder, you will see a folder named configs. That is where your configuration files will live.
There is a configs.txt folder already there for you that is filled with dummy data.
Replace everything with your own information, desired settings, and CRNs.
Refer to Fields if you need help with what a particular setting does.
The name of the config file isn't strict. It doesn't have to be config.txt.
You can name it anything, just as long as the file extension is .txt.
You can create another configuration file in the same configs folder that follows the same format.
You can just duplicate your existing configuration, but make sure you change the term and CRNs.
First, make sure you set up all the configuration files you want.
Next, double-check that your username and password is correct. Also, make sure your term is in the right format as discussed previously.
Then, make sure your CRNs are correct and belong to the right school and term. It's not hard to accidentally put De Anza CRNs in a Foothill configuration file for example.
Finally, make sure each [[Course]] is set up the way you want it. Remember the double brackets for courses.
Think about whether you want to prioritize open seats, want to drop a course if another one opens,
or are okay with waitlisting.
I recommend leaving comments for each course to remind you what class each CRN belongs to. Comments start with a hashtag. They can start on a new line or be at the end of an existing line. Something like this works:
# MATH 1D
[[Course]]
primary = "28574" # Fatemeh Yarahmadi
backups = ["28837", "27194"] # Lilit Mazmanyan, Vinh Nguyen
drop_on_open = "26364" # Hassan Bourgoub
# Ethnic Studies GE
[[Course]]
primary = "10293" # CETH 10 with Wayne Jopanda
backups = ["00193", "12034"] # ADMJ 29 with Meghan Kensler, AFAM 10 with Julie Keiffer-Lewis
prioritize_open_seats = true # I don't really care which one I get into, I just want to get into one of them
Comments don't change anything, so you can really put whatever you want in them.
If you ever change your mind about something, you can always just close the program, change stuff, and run it again. You don't have to commit to it. DARE is designed to be pretty low-maintenance.
DARE is a terminal-based application. If opened directly, terminal-based applications automatically close when they have finished executing.
DARE usually shouldn't close immediately. If it does, it's usually a sign that your configuration files are not right. Check them over to make sure your credentials, term, and CRNs are correct. Make sure the headers are right too.
If you want to see what's going on, you can manually open the terminal/command prompt app and run DARE through that.
You just need to cd into the folder (look it up if you're not sure how to do that)
and then run .\dare.exe (Windows) or ./dare (Mac/Linux).
No. DARE will pause execution. You can turn off your screen though as long as it doesn't put the computer to sleep.
It's best to run this on a computer that you know will always be on. I usually run it on an Ubuntu server.
Yes. Make sure the watch_for_open_seats setting is true.
This setting will apply to all courses and will only take effect if any are full.
Keep in mind that if you have the waitlist setting off for a certain course, DARE will not register
if the course is waitlisted—only if it is open. If the course is full, it is likely the waitlist is too,
so you will probably never get the course. You'll probably want to have waitlist on.
What if I only want to register for the CRN that is open or with the least number of students on the waitlist?
Enable the prioritize_open_seats setting for the course.
This setting will scan through all of your CRNs for the course, figure out which is the most open, then register for it.
It will prioritize open courses (if multiple are open, it will select based on the order you listed), then the classes with the least number of students on the waitlist.
This is particularly common when you are currently registered in a not-so-great section and want to "trade" it for another section.
In this case, you would add the CRN of the course you want to drop to the drop_on_open setting of the course.
When a class opens up (can be primary or backup), it will drop the course at the same time it tries to register.
The caveat is that if registration fails, whether it be due to someone else registering first or if you are not eligible to register for the new course, the course you listed will still be dropped. This is why this setting can be very dangerous.
DARE will try to warn you on startup if a class is a restricted section that you may not be able to sign up for, but it cannot detect if you do not satisfy the prerequisites or are unable to register for another reason.
You are responsible for making sure you are eligible to sign up for the courses you list.
Also, since this setting will most likely be used in conjunction with watch_for_open_seats, keep in mind that you will
likely be dropping the course for the last seat on the waitlist. This is fine earlier in the registration period, but
can be risky later on, especially if the instructor does not usually give out add codes.
Set the waitlist setting of the course to false.
It will only register you if the course's main roster is open.
Set enable_notifications to true and fill in your Discord webhook link.
To get a Discord webhook link, follow the steps under "Making A Webhook" here. Keep in mind you can only do this with servers you own. Maybe make a new, empty server for this because it's weird sending notifications of your college registration to people.
Set display_cwid to false. It's best to do this for privacy if you're screenshotting stuff for some reason.
Set enable_logs to false.
Keep in mind though that if you can't register for some reason and the terminal window closes, you won't be able to see what happened unless you enabled Discord notifications.
Also, if you want to report a very specific issue or a bug, it'll be hard to figure out what's wrong without them.
It's cool if you want to take up less storage, but they don't really use much storage in general.
[Login]
cwid = "123"
password = "super_secret_password_123"
[Term]
term = "2025 Fall De Anza"
[Settings]
display_cwid = true
enable_logs = true
watch_for_open_seats = true
[Notifications]
enable_notifications = true
discord_webhook = "https://discord.com/api/webhooks/"
# This is an example of a course with all five fields.
[[Course]]
primary = "28777"
backups = ["27488"]
drop_on_open = "26235"
prioritize_open_seats = true
waitlist = true
# This course is missing fields.
# It's fine though since we have default options.
[[Course]]
primary = "27470"
waitlist = true
# This course only has the primary CRN.
[[Course]]
primary = "12345"