Here are some guidelines to do a great project.
The project should follow these guidelines:
- Written in web2py. A very small number of exceptions will be granted on a case by case basis only.
- Use the database. A good project will use the database in a nontrivial way (at least, more than one table, appropriate storage of data).
- Store user data or preferences. The project will let users interact with the web site, remember who they are, and offer a personalized experience.
- Good UI. You can use "canned" web2py forms, but the UI has to be good and natural for the purpose.
- Gradual implementation . A good project divides its goal in stages, so that you can start implementing a simple but functional project, and add more elements and functionality to it later. The projects that end up more at risk of failure are those that have too ambitious a goal, without any intermediate functional stage that can be turned in as a class project in case the ambitious goal cannot be achieved within the time constraints of the class. It is very important that you design clear stages for the implementation, in such a way that the project is always functional, and progresses from one functional stage to the next.
- Versioned code. It is very important that the code is versioned. This facilitates collaboration, and it makes it possible to backtrack from semi-completed implementation (or newly added bugs) when the time comes to turn in the project. Versioning is a requirement.
Here are some examples of great projects in the past.
- Various good projects were done to manage sport team / club membership, calendar of games, team membership, messaging board, etc. These were done by people belonging to the teams / clubs, so that they knew what was needed.
- Projects to let students seek other students of similar interests, organize clubs, organize club membership and organization.
- E-commerce sites for stores (from skateboard manufacturers to bakeries) to which people had connections. Careful that a run of the mill site that just lists stuff for sale, with a non-editable static list of things for sale, just is not enough.
- Projects where you create animations, music, musical scores, etc. These were some of the most successful projects. People were able to create these things sometimes using sophisticated HTML5, share them, and so forth.
- Campus marketplaces for goods or services.
- Project management, class management.
Some themes generally did not lead to top quality projects:
- Some sites are created to share information on video games, or rank them, or review them, etc. These somehow rarely result in great projects.
- Personal trainer / health / diet apps. I am all for great food, but somehow rarely these have led to great projects.
- Inventing one's own video games. This can be done, but with great care. It's quite hard to do a video game, so that there is a great risk that the final result is a meh game associated with a meh site.
- Generally, for some reason, sites associated with video games don't end up being great projects, but I am not quite sure why. It might depend more on interest mismatch (games vs web?).
Here are some random ideas. Contribute more to the spreadsheet. The best ideas are the things that you are interested in.
- Clone Twitter. It's not very difficult, if you do just a web app, and you don't make it all that scalable.
- Clone OpenTable. This is way more interesting. You can do an OpenTable clone that can be used entirely via web from mobile phones. People should be able to login as users or as restaurant workers.
- Spacial social network. Social site where people can follow each other. If A follows B, and B does a post at location c, when A is also close to c, A will see the post by B. Use case: B was in vacation, giving advice re. something to do at c.
- Help non-profits find volunteers with given skills. A sort of marketplace for volunteers and non-profits or NGOs, with recommendations, etc. There are some students interested in this, I could put you in touch with this.
- Why not do a Piazza for students, where it is fully student-driven, and teachers are there as guests if at all? And posts invisible to teachers are allowed? People should be able to find their class, join it (with some mechanism to avoid interlopers), etc.
- Clone Google Moderator. Who knows how much longer will it be around? Let's make an open-source replacement!