Development Seminar Project 1.5
expanding on your previous project
Due:
March 8th at 11:59pm
Summary:
You will get the chance to expand on your initial project. This might
require more: investigate an api, read documentation, write a program and
write tests for a program to get our initial creative juices flowing.
Details:
Now you have a
program which will download a bunch of jobs and store them in a
database. It is time to expand the program to add additional
functionality. We need to provide the user a nice way to view and
filter the data. You will need to develop a graphical user interface
that allows the user to filter the jobs on several criteria.
Mock up of a
possible UI for this project
Nitty-gritty:
- write it to be cross platform on desktop machines, Python, rust and
golang should do that anyway, Java tries to as well. But any external
libraries need to work on linux especially.
- use one of the
jetbrains IDEs to do your work. That should make the java work
less painful in particular. We have them installed here at the
university and you can get the
full professional suite of tools for free as students so long as
you are only using them for student work
- Updating the jobs in the database:
- the user should have the ability to do one of the following on
startup
- Just use the data already in the database (don't query
stackoverflow)
- Wipe the database and refill it with new data
- Update the database. query stackoverflow, but only add to the
database new data since the last time data was added to the
database. (think
SELECT MAX(Last_Updated),<columns> FROM <table> where <criteria>)
- Filters:
- you must allow the user to type in arbitrary filter criteria
- Your filters need to support both equality (eg location = 'Boston')
and. where it makes sense. inequality (eg: posting date is less than a
week ago)
- Filtered Jobs
- display all of the filtered jobs in some sort of selection area
(list or dropdown or tree or something)
- when a job is selected, put all of its details into a nice display
on your GUI.
- Make sure that it is easy to find all of the information from last
time (title, company, location, allows remote etc)
- make sure that there is no more HTML cruft visible at this point
- Graphical user interface.
- so long as you provide all of the features needed (in a way that is
easy to find), you can arrange your GUI as you see fit.
- you may use any cross platform library for this
- Extend your small suite of automated tests (lets say about 10ish more
assert statements worth) to test at least more different functions.
Include these in your project
- your tests should include at least
- retrieving good data from the database
- simulate the user entering bad data in the filter fields - make
sure your program handles things
- other tests might include making sure the update vs wipe vs
offline modes work.
- If you are used to
- When you are done, you need to write a short writeup (probably about
2-3 pages. Put this document in your project directory before you zip it
up and submit. this document needs to include
- the list of dependencies for the project
- How you chose to implement the project and why
- Your GUI design for the project and why you designed your Graphical
User Interface this way. (how does it both help the user and help you
make the database access just work)
Zip your entire project directory and submit the whole thing on
blackboard.
Include in your zipped submission a file telling me how to run your
tests using junit/pytest/built in testing (for golang or rust) which unit
and functional tests show your code to work and be error free.