Restaurant Explorer

screenshot of Restaurant Explorer
react
remix
tailwind
prisma

Restaurant Explorer

A a crowdsourced food rating system built to help users find and review restaurants and their products.

Overview:

Restaurant Explorer is a crowdsourced food rating system that helps users find and review restaurants and their products. Users can view restaurant information, rate and review restaurants and products, and filter restaurants based on cuisine. The application also allows users to view a list of restaurants they have previously rated.

Features:

  • View restaurant information: Users can see detailed information about each restaurant, including available products, the latest review, and the average rating if it exists.
  • Rate and review: Users can rate and leave reviews for each restaurant and its products, providing valuable feedback for others.
  • Filter by cuisine: Users can filter restaurants based on their preferred cuisine, making it easier to find specific types of food.
  • View rated restaurants: Users have access to a list of all the restaurants they have previously rated, allowing them to revisit their favorite spots or track their dining history.

Installation:

To set up the development environment for Restaurant Explorer, follow these steps:

  1. Setup a Postgres instance locally using Docker:

    • Command: docker run --name restaurant-explorer -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=secret -p 5432:5432 -d postgres
  2. Create a .env file in the root directory of the project and add the following configuration:

DB_HOST=localhost
DB_PORT=5432
DB_NAME=restaurant-explorer
DB_USER=postgres
DB_PASSWORD=secret
  1. Install the required dependencies:

    • Command: npm install
  2. Setup the database:

    • Command: npm run db:setup
  3. Start the development server, which automatically rebuilds assets on file changes:

    • Command: npm run dev
  4. To run the test suite for the project, execute the following command:

    • Command: npm run test

Summary:

Restaurant Explorer is a useful crowdsourced food rating system that allows users to find and review restaurants and their products. With features like restaurant information, rating and review functionality, cuisine-based filtering, and a history of rated restaurants, the application offers a comprehensive solution for users to explore and share their dining experiences. It also provides a development guide to help users set up their own instance of the application and contribute to its improvement.

react
React

React is a widely used JavaScript library for building user interfaces and single-page applications. It follows a component-based architecture and uses a virtual DOM to efficiently update and render UI components

remix
Remix

Remix is a modern JavaScript framework that focuses on building fast and performant web applications. It emphasizes a combination of server-rendered content and client-side interactivity, offering a robust architecture for creating scalable and maintainable projects.

tailwind
Tailwind

Tailwind CSS is a utility-first CSS framework that provides pre-defined classes for building responsive and customizable user interfaces.

prisma
Prisma

Prisma is a server-side library that helps developers read and write data to the database in an intuitive, efficient and safe way.

fullstack
Fullstack Boilerplates

A fullstack boilerplate provides a starter application that includes both frontend and backend. It should include database, auth, payments, user roles and other backend services to build a fully featured saas or webapps.

eslint
Eslint

ESLint is a linter for JavaScript that analyzes code to detect and report on potential problems and errors, as well as enforce consistent code style and best practices, helping developers to write cleaner, more maintainable code.

typescript
Typescript

TypeScript is a superset of JavaScript, providing optional static typing, classes, interfaces, and other features that help developers write more maintainable and scalable code. TypeScript's static typing system can catch errors at compile-time, making it easier to build and maintain large applications.