## Inspiration

As students, we all understand the difficulties of waking up for those early morning classes and just how easy it is to turn off the alarm and go back to sleep; thus missing those early morning starts.

## What it does

Solaris is a web application that makes the act of waking up in the morning a more pleasant and fun experience. With this site, users will set the wakeup time in the same manner as any other clock app but this time, when the alarm goes off, they must beat a snake game in order to turn off the alarm noise. By taking the normally grueling activity of waking up and making it a more enjoyable experience, Solaris functions as a more effective alarm app that allows users to be more successful with waking up on time.

## How we built it

We created this application using **HTML, CSS and Javascript (React)**. The Homepage of this website was created using React and styled with CSS to achieve a simple-to-use user interface. The Snake game portion of this application was created using HTML and styled using CSS. The snake game is credited to Steven Lambert who created a license-free and open-source snake game at <https://gist.github.com/straker/ff00b4b49669ad3dec890306d348adc4>. With this code we were able to style it and add additional features which would create a better environment for our users.

## Challenges we ran into

There were quite a few challenges we ran into involving the creation of the home page. At first, we were rusty with using React, and thus it took some time to get used to the working environment once again, such as creating the dynamic clock and alarm clock. Other challenges included figuring out Git and text editors for someone who is new to the working environment.

## Accomplishments that we're proud of

We are quite proud of what we accomplished, learning more and becoming familiar with web-design. We came into this event lacking knowledge in certain fields, but definitely left stronger!

## What we learned

We learned quite a lot about React and other web-development technologies and techniques. Despite facing some issues, we were able to tackle them and learn from them at the same time.

## What's next for Solaris

Next up would be creating our own implementation of the snake game. We are very grateful for Steven Lambert for providing an open-source and license-free snake game, creating our own would greatly improve our user-interface and experience. We hope to continue to work on this project in the future and add many more features!
## pizza

Pizza is a command line browser for Piazza. Quickly and easily browse Piazza without leaving your terminal.

While it's still very much in-beta, you can try it on most Unix-compatible machines by running:

`pip install git+git://github.com/prafulshankar/pizzasearch.git`

It requires Python 2.
## Inspiration

College students are busy, juggling classes, research, extracurriculars and more. On top of that, creating a todo list and schedule can be overwhelming and stressful. Personally, we used Google Keep and Google Calendar to manage our tasks, but these tools require constant maintenance and force the scheduling and planning onto the user.

Several tools such as Motion and Reclaim help business executives to optimize their time and maximize productivity. After talking to our peers, we realized college students are not solely concerned with maximizing output. Instead, we value our social lives, mental health, and work-life balance. With so many scheduling applications centered around productivity, we wanted to create a tool that works **with** users to maximize happiness and health.

## What it does

Clockwork consists of a scheduling algorithm and full-stack application. The scheduling algorithm takes in a list of tasks and events, as well as individual user preferences, and outputs a balanced and doable schedule. Tasks include a name, description, estimated workload, dependencies (either a start date or previous task), and deadline.

The algorithm first traverses the graph to augment nodes with additional information, such as the eventual due date and total hours needed for linked sub-tasks. Then, using a greedy algorithm, Clockwork matches your availability with the closest task sorted by due date. After creating an initial schedule, Clockwork finds how much free time is available, and creates modified schedules that satisfy user preferences such as workload distribution and weekend activity.

The website allows users to create an account and log in to their dashboard. On the dashboard, users can quickly create tasks using both a form and a graphical user interface. Due dates and dependencies between tasks can be easily specified. Finally, users can view tasks due on a particular day, abstracting away the scheduling process and reducing stress.

## How we built it

The scheduling algorithm uses a greedy algorithm and is implemented with Python, Object Oriented Programming, and MatPlotLib. The backend server is built with Python, FastAPI, SQLModel, and SQLite, and tested using Postman. It can accept asynchronous requests and uses a type system to safely interface with the SQL database. The website is built using functional ReactJS, TailwindCSS, React Redux, and the uber/react-digraph GitHub library. In total, we wrote about 2,000 lines of code, split 2/1 between JavaScript and Python.

## Challenges we ran into

The uber/react-digraph library, while popular on GitHub with ~2k stars, has little documentation and some broken examples, making development of the website GUI more difficult. We used an iterative approach to incrementally add features and debug various bugs that arose. We initially struggled setting up CORS between the frontend and backend for the authentication workflow. We also spent several hours formulating the best approach for the scheduling algorithm and pivoted a couple times before reaching the greedy algorithm solution presented here.

## Accomplishments that we're proud of

We are proud of finishing several aspects of the project. The algorithm required complex operations to traverse the task graph and augment nodes with downstream due dates. The backend required learning several new frameworks and creating a robust API service. The frontend is highly functional and supports multiple methods of creating new tasks. We also feel strongly that this product has real-world usability, and are proud of validating the idea during YHack.

## What we learned

We both learned more about Python and Object Oriented Programming while working on the scheduling algorithm. Using the react-digraph package also was a good exercise in reading documentation and source code to leverage an existing product in an unconventional way. Finally, thinking about the applications of Clockwork helped us better understand our own needs within the scheduling space.

## What's next for Clockwork

Aside from polishing the several components worked on during the hackathon, we hope to integrate Clockwork with Google Calendar to allow for time blocking and a more seamless user interaction. We also hope to increase personalization and allow all users to create schedules that work best with their own preferences. Finally, we could add a metrics component to the project that helps users improve their time blocking and more effectively manage their time and energy.