StaySuite is a property rental platform similar offering key features such as user authentication, booking management, saving travelling history and favurite listings for guests while enabling host to manange listings via dashboard and seamlessly handle reservations made on there listings. It supports secure authentication using JWT
, real-time updates for both guests and hosts with Socket.io
, and image uploads of listings with Multer
. Built with Nuxt.js
for the frontend,Nest.js
for the backend, and MongoDB
for data storage, the platform ensures a seamless and efficient user experience.
This repository contains the frontend for the StaySuite property rental platform, built with Nuxt.js, Pinia Store, and VueUse Motion. It provides a responsive and dynamic user interface, ensuring a smooth experience for both guests and hosts.
Nuxt.js powers the application with its server-side rendering and seamless routing, while Pinia Store manages the state efficiently, providing a centralized store for all data across the app. VueUse Motion is used for creating engaging animations and smooth transitions, enhancing the user experience. This combination of technologies ensures high performance, maintainability, and an interactive, polished interface for users.
- Check out the latest demo of Project StaySuite-Site.
- Find the Client Repository of this Project Here StaySuite-Server.
Clone the project using the following command:
git clone https://github.com/BazilSuhail/StaySuite-Client.git
Go to the project directory
cd StaySuite-Client
Then Run this command in your terminal to install all required dependancies:
npm install
In the project directory, you can run:
npm run dev
Runs the app in the development mode. Your server will be running at port 3001, Open http://localhost:3000 or also you can modify it in the .env file.
- Pages: Contains all the pages (e.g., login, signup, listings, bookings).
- Components: Reusable UI components (e.g., forms, modals, cards).
- Store: Pinia store for state management (e.g., user his notificaitions).
- Plugins: Plugin to setup Pinia Store in client enviornment only.
- Composables: Reusable functions across all components (e.g., isLoggedIn (checking whether user is logged in or not) ).
- Assets: Include all assets for the project (e.g. logos, 2d-illustrations).
- Layputs: Layout file for the Project (e.g. allowing component to be stacked together across the website).
- Signup Page: A registration form for new users.
- Login Page: A login form for existing users.
- JWT Authentication: Secure user sessions with JSON Web Tokens stored in
localStorage
. - Protected Routes: Redirect unauthenticated users to the login page when accessing protected routes.
- Listings Management: Admins can view, add, and remove property listings.
- Bookings Management: Admins can view all bookings, including user and property details.
- Booking System: Guests can submit bookings, which are saved to the backend.
- Booking History: Guests can view their booking history.
- Favourite Listings: Guests can save their favourite listings for quick access.
- Listings Dashboard: Hosts can manage their listings, including adding, updating, and removing properties.
- Reservations Dashboard: Hosts can view and manage reservations made on their listings.
- Socket.io Integration: Real-time updates for bookings and reservations for both guests and hosts.
- Pinia Store: Centralized state management for efficient data handling across the app.
- VueUse Motion: Engaging animations and smooth transitions for an enhanced user experience.
- Role-Based Access Control: Routes are protected based on user roles (e.g., admin, host, guest).
- JWT Middleware: Secures routes that require authentication.
- Password Hashing: Passwords are hashed using
bcrypt
before being saved to the database.
- Fully responsive design for both mobile and desktop devices.
- Consistent design with Tailwind CSS.
- Toast notifications for user feedback (e.g., login success, booking confirmation).
- Nuxt.js: Server-side rendering and seamless routing.
- Pinia Store: Centralized state management.
- VueUse Motion: Animations and transitions.
- Tailwind CSS: Styling and responsive design.
- Socket.io: Real-time updates for bookings and reservations.
- Nest.js: Robust and scalable backend framework.
- MongoDB: Database for storing listings, bookings, and user data.
- Multer: Handling image uploads for listings.
- JWT: Secure authentication and session management.
- Bcrypt: Password hashing for enhanced security.