Iteration 1 Plan - GToidZ/ku-polls GitHub Wiki

Goal

Create a working web application and a basic backend with Django for KU Polls. In which, users can view and interact with polls, and administrators can create, edit or delete polls.

Features

  1. A homepage where available polls are catalogued and displayed to users.
    • To reduce users' page load times, it is encouraged to make the web application a single-page site.
  2. Users can choose a poll from the homepage then, select their choice and submit their vote.
  3. Users can see the results of a poll.
  4. Each poll can be set a publication date and they will be not visible until the specified date.
  5. Only application administrators can create, edit and delete polls.
  6. Polls and their properties are saved to the database.
  7. The application has a clean user interface and smooth user experience.

Milestone

  1. Project planning - plans for project should be clear and concise, change of plans must be avoided after this iteration.
  2. Application development - develop a web application with Django.
    1. The page should display every polls that is currently running.
    2. Users should be able to cast their vote and the count is correctly recorded. (Database implementation)
    3. Administrators should be able to create, edit and delete polls. (Admin implementation)
  3. UI/UX design - design UI/UX for a web application and implement into the project.
  4. Code review - review, fix and document project's source code respecting style guides and standards.
  5. Iteration 1 - completing iteration one with deployable application.

Acceptance Criteria

  1. The homepage displays all the polls correctly respecting their publication dates.
  2. Has at least two interesting questions; not being generic.
  3. External links navigate to correct locations.
  4. User experience is fluid.
  5. User interface is clean and beautiful.
  6. Everything works (deployable) on the iteration1 branch and must be merged into master.

Retrospective

What went right?

The first iteration was successfully implemented with all the requirements that are functionalities.

The data reading/writing from-and-to database worked fine.

Everything works on deploy.

What went wrong?

This first iteration was on a limited timeframe (developer's fault for starting the work late), the idea of a single page application cannot be applied in the current state and expects consideration.

User interface is clean but it's too minimal; has little detail. User experience is decent but not great overall (can be better if single page).

What has been learned?

Django as a web framework provides a powerful tooling for templating views and generic views are useful in some cases. It is better to tend to learn more about them.

How to improve in next iteration?

  • Start work earlier!
  • Study on how to revise the app into a Single Page App (SPA).
  • Study CSS or use CSS-based frontend toolkits (Bootstrap, Tailwind etc.)
  • Learn more about templating system and generic views.