Skip to content

life4smile/VotingSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Graduation project

Design and implement a REST API using Hibernate/Spring/SpringMVC (or Spring-Boot) without frontend.

The task is:

Build a voting system for deciding where to have lunch.

  • 2 types of users: admin and regular users
  • Admin can input a restaurant and it's lunch menu of the day (2-5 items usually, just a dish name and price)
  • Menu changes each day (admins do the updates)
  • Users can vote on which restaurant they want to have lunch at
  • Only one vote counted per user
  • If user votes again the same day:
    • If it is before 11:00 we asume that he changed his mind.
    • If it is after 11:00 then it is too late, vote can't be changed

Each restaurant provides new menu each day.

As a result, provide a link to github repository. It should contain the code, README.md with API documentation and couple curl commands to test it.


10 Best Practices for Better RESTful API

P.S.: Make sure everything works with latest version that is on github :)

P.P.S.: Asume that your API will be used by a frontend developer to build frontend on top of that.


error Рекомендации

  • читаем ТЗ ОЧЕНЬ внимательно, НЕ надо ничего своего туда домысливать и творчески изменять
  • тщательно считайте количество обращений в базу на каждый запрос
  • тщательно считайте количество запросов в вашем API для отображения нужной информации
  • учитывайте, что пользователей может быть ооочень много, а админов- мало
  • в проекте (и тестовом задании на работу) в отличии от нашего учебного topjava оставляйте только необходимый для работы приложения код, ничего лишнего:
    • НЕ надо делать разные профили базы и работы с ней.
    • НЕ надо делать абстрактных контроллеров на всякий случай.
    • НЕ надо делать классов репозиториев, если там нет ничего, кроме делегирования.
    • Из потребностей приложения (которую надо самим придумать) реализовывать только очевидные сценарии. Те.- НИЧЕГО ЛИШНЕГО.
    • НЕ надо все бездумно кэшировать
  • базу лучше взять без установки (H2 или HSQLDB)
  • по возможности сделать JUnit тесты
  • уделяйте внимание обработке ошибок
  • далаем REST API в соответствии с концепцией REST, с учетом иерархии принадлежности объектов
  • не смешивайте TO и Entity вместе. Лучше всего, если они будут независимыми друг от друга.
  • если приложению в объекте требуется только его id, используйте reference (как мы при сохранении еды вставляем туда юзера)
  • Use for money in java app
  • Историю еды и голосований лучше сделать. Нужно различать базовые вещи, которые закладываются в архитектуру приложения и неочевидные доработки к ТЗ, которых лучше не делать.

Совершенство достигнуто не тогда, когда нечего добавить, а тогда, когда нечего отнять

Антуан де Сент-Экзюпери

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages