Giter Club home page Giter Club logo

nusmods's Introduction

NUSMods

Welcome to NUSMods, the open-source college course catalogue, module search, and timetable builder for the National University of Singapore!

Screenshot of light mode NUSModsScreenshot of dark mode NUSMods

We are a passionate team of students and alumni dedicated to enhancing school life through technology. With NUSMods, we assist over 30,000 students every semester in planning their timetables and finding the best modules to take.

Usage

For users, you can access our website at nusmods.com. There's no mobile app, but our website is mobile-friendly and can be pinned to your home screen on Android and iOS.

If you need to access NUSMods data programmatically, we provide a public API for you to retrieve the necessary information. Additionally, if you wish to export your timetables, we offer timetable export service that you can use. Please be considerate and use these services responsibly.

Contributing

We welcome contributors of all skill levels and backgrounds. Our contribute page goes over the various ways you can contribute to NUSMods for general users.

For developers and designers, our contributing guide will help first-time contributors get started. For more advanced topics, we have an architecture overview that explains how the various projects in this repository fit together.

Quite a few of our contributors are students who started contributing to NUSMods with no prior experience. They have since gone on to internships and full-time jobs as software engineers / designers / founders. We are happy to help you get started and learn new skills!

Community and Support

Connect with us

You can reach us through the following channels, listed in order of preference:

Acknowledgements

We would like to express our gratitude to all the contributors who have made this project possible. Check out the list of contributors who have dedicated their time and effort.

Backers and Sponsors

We extend our heartfelt thanks to our backers and sponsors. You can become a backer or sponsor this project and have your logo/profile picture featured with a link to your website.

License

All projects and packages in this repository are MIT licensed.

Supported by

BrowserStack lets us ensure NUSMods functions across all browsers and devices by allowing us to test NUSMods on real devices, including Safari on older iPhones and previous versions of browsers.

1Password lets us manage our account passwords, identities and keys as a team securely and efficiently.

Netlify automatically deploys our branches so we can easily test incoming Pull Requests.

nusmods's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nusmods's Issues

Color customization

Not only arbitrary, as selecting a good set of colors would take some time. Should provide some alternate sets of color schemes by default and maybe the ability to share custom color schemes. (Could use that to get users to submit color schemes for possible inclusion as defaults.)

Class Schedule: Sorting of Class No

Just a suggestion to the sorting of Class No in the Class Schedule: sort by ascending length of Class No first, then by alphabetical order. This way, Class No 10, 11, etc. will not appear before 2. Cheers!

SEO for SPA

Especially important for module pages, none of which can be seen by search engines currently.

Layout Issues with Firefox ESR

Reported by Lim Wei Zhong via email:

I’m on Firefox 24.6.0 ESR, and the .navbar-header seems too small to accommodate the home icon and the text box. Because the text box overflows to the next line, it obstructs more than half of Monday. I’ve experimented and I need to increase its width by exactly 10 px. Hope this information helps and you can correct it. Thank you!

Wow, you must have had it setup really fast! I didn’t like the new look of Firefox 29 much, but wanted to still stay updated. Thanks for downloading it and trying out! I didn’t really mean just change the width, but I thought you could figure out the actual cause, because I assumed you know why you set that width in the first place. There’s also another weird problem... do you notice the “Title” button in the group of buttons “Code”, “Group”, “Room”, “Title”, “Week” can’t be seen? If I change the enclosing form element to a smaller width it fits to the right of the module list, and those buttons re-appear...!

Theme scroller doesn't cycle

Expected behaviour: to reach the first theme after the last theme.
Actual behaviour: nothing happens after 'next'-ing the last theme; to reach the first theme, you need to reverse through all the intermediary themes.

Unable to filter module by Prerequisite

I couldn't find the filter box on the left panel. I want to find out what modules should I took after completing this modules.

For example, after took one of the module last semester, I decided that I want to pursue in depth about this course. So usually I filter what courses have that modules as its prerequisite.

Unfortunately, I'm not sure if I am the only one who do that.

Rewrite Module Finder

Using own custom system, not Exhibit 3.0. Would be faster / lighter and easier to extend. (Currently only a few bits of functionality have been added to the Exhibit 3.0 code we are using, and it is not easy to add more.)

Save / Load / History system

From NUSMods Facebook page:

Lim Chai Hou Danny
Hi! The URL's sharing nice, but once someone opens another's link, his/her own saved timetable appears to be overwritten by the timetable in the link.

Do you think disabling automatic saves when opening a link or even an explicit save/load function would work here?

Thanks for the great job as always :)

NUSMods.com · NUS CORS Module Finder & Timetable Builder (Unofficial)
You're welcome! Yeah the current url is always saved regardless, hadn't gotten around to improving it yet.

Since the app's using localStorage not cookies, it should have at least 5MB at its disposal, enough to save ~40,000 unique timetable configurations of normal workload. So that opens up quite a few possibilities.

I'm thinking maybe something like a game: autosave the current configuration every time there's a change of modules, so there'd be a history stack which can be accessed fully via infinite scrolling, and also explicit saves, which will stay on top of the stack.

Then roll it all up in a autocompleting input like the one that adds modules, so could search through history by code/timestamp. Might be too much info/functionality to fit nicely, gotta see. What do you think?

Lim Chai Hou Danny
wow. Actually, we can just have explicit saves and if time permits, autosaves that trigger at every page load and page unload/leave, since the change of mods can be reversed by using the browser's Back capability already (which may also trigger a lot of duplicates in the history stack)

The autosaves can still be scrolled & searched through and quickly loaded as you suggested. :)

NUSMods.com · NUS CORS Module Finder & Timetable Builder (Unofficial)
Yeah have to figure out what level of granularity for autosaves would be most useful. Page load/unload definitely makes sense. Like you said, just add that and explicit saves for starters, then maybe see if any additional autosave points would be good.

When I said change of mods the idea is that it would autosave the last configuration for every unique set of mods within a session, so that you could compare between different sets without needing to explicitly save. But yeah might be too much noise.

[Design] Endless Pagination

I have been questioning about the endless pagination in many sites, because I find myself quite annoyed because I was overwhelmed by lots of content in the page.

In short, I still prefer the simple pagination for NUSmods listing.

Here's an article that discuss about endless pagination.
http://ux.stackexchange.com/a/33408/43219

Is it possible to plan my module for the next semester?

I usually plan my courses, one semester before.
So, in the past I can switch to the next semester.
In which I couldn't achieve it anymore.
How do I do it in the new release?

Or At least How can I search for the course that is offered next semester?

Manually specifying lesson groups

From NUSMods Facebook page:

Lim Chai Hou Danny
The last one about specifying the lec/tut/lab groups manually is available on the official builder and somewhat so in nuschedule. In the latter users can just click on individual buttons representing the different lec/tut/lab groups and the module timeslots will change accordingly. Useful for students whose groups are assigned (mainly Engin) or just quickly checking for clashes after the balloting. (Instead of displaying all the group buttons they can be hidden in a popup or something.)

NUSMods.com · NUS CORS Module Finder & Timetable Builder (Unofficial)
6. I think enhanced dropdowns, kinda like in the official builder, would be the way to go? As in that case you already know the name and it'd be faster to select it via auto-completion. But yeah needs to be somewhere where it doesn't clutter up the interface. I'm thinking like maybe a pop-out sidebar with all the dropdowns arranged vertically, then you could just type and tab through the controls quickly.

Lim Chai Hou Danny
6. Yeah, I agree with the dropdown ones. Maybe the sidebar can be minified and placed beside the listed mods at the bottom again.

Hiding modules

From NUSMods Facebook page:

Lim Chai Hou Danny
5. Hiding mods refer to being able to quickly hide the module's exam, lec, tuts and labs from the builder instead of having to remove and re-add it. Good for those who want to be able to add a lot of mods first and shortlist them or work out a good <5-day week timetable. Still quite low priority as the mod can be re-added fairly quickly.

[Design] Group by Faculty

Why the courses are no longer grouped in the new release?

The issue with this design is that I couldn't browse for the courses under a certain school.
For example: I wanted to browse for all module under "School of Business", or "School of Computing", I have to find out what are the courses from school of computing and school of business. Such as:

  1. Information System
  2. Computer Science
  3. Financial Accounting
  4. Strategy & Policy
  5. etc..

screenshot from 2014-07-07 14 31 42

Unexpected Behavior from the action buttons.

When I click the show-hide action of a particular module, a random outcome appear on the timetable.
In the screenshot, you see the module ES1102, get displayed multiple times.

After this behavior, I also can't remove some of the other module on my list.

screenshot from 2014-07-07 15 47 33

Scroll to top only after page has loaded

Minor visual bug when switching to pages which load asynchronously.

Example:

  1. Start session from http://nusmods.com/modules
  2. Scroll down
  3. Switch to timetable which has some modules

Scroll bar will appear to jump to top then disappear when page has loaded. It should simply stay in position, then disappear once page loads.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.