Next Office Booking App

screenshot of Next Office Booking App
nextjs
react
tanstack
tailwind
daisyui
prisma

Office booking app built in TypeScript using Next.js, React.js, tRPC, NextAuth, Prisma (T3 stack)

Overview

The next-office-booking-app is an intriguing full-stack web application designed to streamline the process of booking multiple rooms through a subscription model. With features like user authentication and integration with payment platforms such as Stripe, this app aims to create a seamless experience for users. Although it is currently incomplete due to the cancellation of the overarching project, the client has graciously allowed sharing of the code for educational and demonstration purposes, making it a great resource for learning.

This app exemplifies modern web development practices with its robust architecture and technologies. It is built with TypeScript and leverages the Next.js framework to deliver a responsive user interface and efficient backend functionalities. While the app does have some limitations, its foundational features and tech stack make it a commendable example for developers interested in building similar applications.

Features

  • Multi-tiered Subscription Model: Users can subscribe to different tiers that determine their booking permissions, enhancing flexibility in usage and billing.

  • Individual Booking Purchases: For those without a subscription, the option to pay for individual bookings allows for ease of access and one-time use.

  • Automated Refunds: The application offers full refunds for bookings canceled outside a set window, such as 48 hours prior to the event, adding a layer of consumer protection.

  • User Authentication with NextAuth.js: This feature ensures secure login and session handling, providing better management of user accounts and data.

  • Responsive Frontend with React.js: Utilizing React and a calendar component enhances user interaction, allowing for a smooth booking experience.

  • Robust Database Management: The use of CockroachDB and Prisma ORM provides powerful data handling capabilities, ensuring consistent access and performance.

  • Payment Integration via Stripe: Seamless handling of payment processes is facilitated through Stripe, supporting both subscriptions and one-time payments.

  • Modern UI with TailwindCSS: The application’s design employs TailwindCSS for a clean, responsive user interface, making navigation intuitive and visually appealing.

nextjs
Next.js

Next.js is a React-based web framework that enables server-side rendering, static site generation, and other powerful features for building modern web applications.

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

tanstack
TanStack

TanStack is a collection of high-quality, framework-agnostic libraries including TanStack Query for data fetching, TanStack Router for routing, TanStack Table for tables, and more. These tools provide powerful, type-safe solutions for common web development challenges.

tailwind
Tailwind

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

daisyui
daisyUI

daisyUI adds classes to Tailwind CSS for all common UI components. Classes like btn, card, etc. This allows us to focus on important things instead of making basic elements for every project.

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

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.

docker
Docker

A website that uses Docker for containerization to streamline development, testing, and deployment workflows. This includes features such as containerization of dependencies, automated builds and deployments, and container orchestration to ensure scalability and availability.

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.

postcss
Postcss

PostCSS is a popular open-source tool that enables web developers to transform CSS styles with JavaScript plugins. It allows for efficient processing of CSS styles, from applying vendor prefixes to improving browser compatibility, ultimately resulting in cleaner, faster, and 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.

zod
Zod

Zod is a TypeScript-first schema declaration and validation library. It allows you to define schemas that can validate data at runtime while providing excellent TypeScript inference, making it perfect for API validation, form validation, and type-safe data handling.