Split the Check is a social-driven web application designed to solve a common frustration diners face: restaurants that refuse to split the bill.
Because check-splitting practices vary widely and often depend more on the server than on official policy, diners rarely know what to expect ahead of time. The platform provides transparent, community-generated insights that help users make informed dining decisions.
Some restaurants are willing to split checks, while others refuse, causing inconvenience and negative dining experiences. Diners deserve to know these policies in advance, and restaurants that support customers should be recognized.
Split the Check offers a centralized platform where users can:
- Search restaurants by name and location
- View real-world voting data
- Share experiences and opinions
- Promote restaurants that prioritize customer satisfaction
The platform allows guest users to browse freely, enabling them to search for restaurants, view restaurant details, and see the current vote counts (Will Split vs Won’t Split). However, actions that influence community data require user authentication. To add, edit, or delete a restaurant, or to vote on a restaurant’s check-splitting policy, users must register or log in. This approach ensures data accuracy, prevents misuse, and maintains the integrity of all community-generated information.
Based on the project requirements and instructions, the Split the Check website is built using the following technologies and architectural components:
- Ruby on Rails (Rails): The primary web application framework.
- MVC Pattern: The application follows the Model-View-Controller architecture with a clear separation of concerns.
- Tailwind CSS: Used for styling and layout consistency.
- Partials (.erb): Used to refactor and simplify complex ERB and HTML.
- turbo_stream: Enables updating vote totals in real time without a full page reload.
- application.html.erb: Defines the global layout and structure of the website.
- Database Model: Restaurant information and both vote tallies (will split, won't split) are stored in a single table.
- Model Validations: Ensures accuracy and data integrity.
- UML Diagrams: Includes a UML Class Diagram (Model and Controller) and a UML State Diagram (page flow).
- Ruby MiniTest: Used for unit testing.
- Test Types: Controller testing (routes and responses) and model testing (methods such as search and voting logic).
Author: Michael Arg.
Email: [email protected]









