stuRENT is a room finding website, designed for university students, allows hosts to list single rooms, sublets, and flats, while students can filter and rent these accommodations based on type, gender, and university. stuRENT is fully Responsive.
- Technologies
- Requirements
- How to run the project
- Features
- Process
- What I have learned
- How it can be improved
- Demo Video
NextJS
TypeScript
Tailwind CSS
Shadcn
Redux Toolkit
Rtk Query
React Toastify
Google 0Auth
Zod
React Hook Form
Docker
- Clone this repository and cd into the project directory:
git clone https://github.com/moinulhossainmahim/sturent-ui.git cd sturent-ui
- Replace
env.example
file to.env.local
- Create new apps in google console and config the URL's and save the ClientId
- Update env environment variables
GOOGLE_CLIENT_ID="Your Google App Client ID"
- Run
npm install
inside the main project folder to install all dependencies from NPM.
-
npm run dev
-
Install Docker First
-
Check the official Docker documentation for information how to install Docker on your operating system. And then install Docker and supporting tools.
-
Build the docker images
docker-compose build
-
Start the containers
docker-compose up
-
If everyting setup correctly and your containers are running then you will get the application running in localhost:3000
-
Update port mappings in
docker-compose.yml
file if you want to run in different port
- User Registration: Enable customers to create accounts.
- User Authentication: Implement JWT-based authentication mechanisms to secure user sessions.
- Google Authentication: Integrate google authentication using google-0auth2.
- User Profiles: Enable users to view and update their profiles.
- Host Listings: Hosts can post single rooms, sublets, and flats.
- Detailed Listings:: Each listing includes photos, location, description, and features.
- Wishlist management: User can save any listing to the wishlist for his next ordering.
- Detailed View: Users can click on a listing to see more details, including recommended rooms.
- Dark and Light Mode: Provides an option to switch between dark and light themes for better user experience.
- JWT Tokenization: Implement robust JSON Web Token mechanisms to fortify authentication.
- Schema Validation: Implemented zod schema validation with integrating React Hook Form in Login and Registration form.
- Paginating in listings: Added pagination for fetching more listings.
- Listings Filtering: Implmented filter listings by single, sublet, flat, gender, area, university name.
-
Then Dockerize the application for running in using docker.
-
Then I had implmented different pages file and folder structure.
-
After that I am working on home page UI with all component which includes header.
-
Implement modals UI which includes login, registration, filtering modals, create listing modal etc.
-
Added single listings page UI for showing listing details.
-
Added test data with data types where I needed for example for listings, universities, areas etc which help me later when I am integrating with the backend.
-
Added Redux for state management and include all the global state in Redux which includes Modals and others states.
-
Integrated Register, Login, Logout with backend and frontend.
-
Added React Hook Form and zod validation in Register and Login modals.
-
Added React Hook Form and zod validation in Create Listing modals.
-
Integrated Google login.
-
Make website responsive for mobiles and tablet devices.
During this project I have faced many problems and overcome those for completing my ideas to the project.
- Advanced Authentication Techniques: Gained experience in implementing manual user authentication and integrating Google OAuth for secure and user-friendly login options.
- Next.js: Learned the use of Next.js for server-side rendering, enhancing the performance and SEO of the website.
- React Hook Form and Zod: I have studied about form validation using React Hook Form and Zod and implemented the schema types.
- Shadcn and Tailwind CSS: Learned to create responsive and aesthetically pleasing user interfaces using Shadcn and Tailwind CSS, providing a great user experience across devices.
- RTK Query: Learned how use RTK Query to handle API integrations, providing a seamless and efficient data fetching mechanism.
- JWT: How jwt authentication exactly works and how to use this in every request.
- Dynamic Filtering and Listing Management: Developed dynamic filtering options to enhance the browsing experience, allowing users to filter listings by type, gender, and university.
- Enhanced User Experience with Dark and Light Mode: Implemented dark and light mode themes to cater to user preferences, enhancing overall user experience.
- Docker: Learned how to dockerize a next.js application.
- Implement advanced search filters such as price range, room size, and amenities (e.g., Wi-Fi, parking, furnished).
- Add a feature allowing students to leave reviews and ratings for listings and hosts to build trust and provide insights to potential renters.
- Integrate a map view using Google Maps API to display the location of listings, making it easier for users to find properties in specific areas.
- Implement email and in-app notifications for new listings, updates to favorite listings, and messages from hosts.
- Will be provided soon