In this project you will develop a database-backed web site using Django. The goal is an open ended project that you could use as part of your portfolio and give you experience in developing something that you have defined.
You should develop the project in github as it is important to track effort as the project evolves. It is up to you as to whether you want a public or private github repository. In general it is acceptable and gently encouraged to use a public repository as public github work is a valuable addition to your portfolio.
These specifications are very wide-open to let you really make your own choice as to the nature of your project.
The project must be a web site that can be accessed and viewed.
The project must have at least six data models (i.e. tables)
The project must have at least three Many-to-One relationships between models and at least one Many-to-Many relationship
The project must have a feature for end-users to log in. This can be using the internal Django authorization with manually created accounts or use a social login from one or more of the common providers (Github, Google, Twitter, Facebook, etc).
The project must have at least one example of data coming into the site from users. This could be as simple as a comment or ranking capability or you could build a completely social site intended to be built by the crowd.
The project is intended to have a nice graphic design - it does not have to be stunning but it also not be default browser with Times New Roman font on a white background
These suggestions are not intended to limit you or contradict the specifications but instead to help you get started. Here are some broad categories of projects that you might find interesting.
A web site based around a “data set” like UNESCO World Heritage Sites (https://whc.unesco.org/en/list/). For this project you already have the data., To build your site, you build a data model to represent the data, load the data into your model and then build a fun user interface to let users wander around the data. To satisfy the “login” and “user data” you could add a comment or ranking system.
A social web site that is mostly empty until the users start showing up and filling it up. You might try to make a “mini-reddit”, “mini-Yelp”, “Vegan Restaurants of Ann Arbor”, “The Top Ten Jamaican Restaurants in the World”, or an online “Rock Paper Scissors Tournament” site. If you choose this, a key will be to limit your scope so you don’t go crazy. You will be surprised at the number of tables you need for each feature you add. Your approach should be an iterative approach where you don’t overreach in your initial designs and deliverables and then add features later once you have the early bits working.
A "public facing" web site for an organization like a local non-profit. This is somewhat of a content management problem. Some users will be the admins of the non-profit who can write and edit articles and other users are the general public who might be comment on an/or ranking the material on the site. Interestingly, this kind of application is one of the reasons that Django was originally written (by the tech staff at a newspaper). For this application, you should be able to make very good use of the Django authorization system. You could build a better www.umsi.umich.edu ;)
This is a partial list of some of the previous projects that have been done. These tend to fall into the first category where the starting point is a dataset.
Airline Flight Delays
Artworks of the Tate Gallery
Disney Movie Characters, Directors and Voice Actors
Game of Thrones Character Relationships
Google Play Store Apps
H1B Visa Applications
Hospital Payment and Value of Care
Integrated Postsecondary Education Data (IPEDS) Program Comparisons
Marvel Super Heroes
Metropolitan Museum of Art Artworks and Artists
NBA All Stars
Refugee Internet Connectivity Trends in Greece and Serbia
Video Game sales
UN Sustainable Development Goals
World Cube Association Results
Yelp Business Reviews
There will be a number of small milestones for this project to give you
more opportinuty to get feedback as your progress.