ubc-cpsc455-2024S / project-29_abd

project-29_abd created by GitHub Classroom
MIT License
0 stars 0 forks source link

Group 29 - SoloExplorer

Project Description:

Deployment Link: https://project-29-abd-frontend.onrender.com/

SoloExplorer is a travel site specifically designed for travallers in their 20s and 30s, seeking a streamlined and engaging way to plan their adventures. The platform supports users in creating, managing, and sharing detailed travel itineraries for multi-country, long-term trips. SoloExplorer stores user profiles, trip itineraries. Users can create and manage detailed itineraries, document and share their travel experiences.

GOALS:

Minimal Requirements

User Authentication and Dashboard Management: (Done)

Create a user-friendly interface for creating and managing detailed travel itineraries. (Done)

Mapping and Route Planning: (Done)

Standard Requirements

Travel Dashboard: (Done)

Responsive Design: (Working on complete mobile)

Itinerary Sharing and Downloading: (Done)

Basic User Interface (UI) Enhancements: (Done)

Stretch Requirements

Community-Based Planning: (done)

Personalized Travel Recommendations: (not complete)

Tech used

Setting Up the Development Environment

Our project initiated by configuring a robust development environment. We utilized Git for version control, enabling efficient collaboration and tracking changes across our codebase. Command-line tools were essential for managing project dependencies and running scripts, ensuring our setup aligned with best practices from the initial workshops and labs.

Building a Dynamic UI with React

We leveraged React to build the front-end of our trip management application. React’s component-based architecture allowed us to create reusable and maintainable UI components. We have created components to specify trip details, such that the user can organize and design their trip. We also had other views that differentiated with what kind of data we want to handle. (Public trips vs Private trips) and ensured all layout was consistent with our needs. We utilized useState and useEffect hooks for state management and side effects, respectively intially. React Router facilitated seamless navigation between different views, providing a dynamic user experience. This approach mirrors the techniques and principles covered in the React workshops and assignments. As is, our overall goal is to make sure that the UX is as seamless as possible and invites the user to use our tools.

Developing the Back-End with NodeJS and Express

The server-side logic of our application is powered by NodeJS, with Express as the web application framework. This knowledge also allowed us to devleop react redux into our application through the navigation of different splice files in order to handle the flow of our web application. We developed a RESTful API to handle CRUD operations for trips and day cards. Middleware functions were implemented for authentication, request validation, and error handling, ensuring a robust and secure back-end. In doing so we realized out data types and schema needed to be specific and using the right keys was prevalent in the design of our application. Lastly, Asynchronous programming with async/await enabled efficient handling of I/O operations, as emphasized in the NodeJS workshops.

Utilizing MongoDB for Data Management

MongoDB was chosen as our database due to its flexible schema and scalability. We used Mongoose to define schemas, enforce data validation, and manage relationships between documents. Collections were created for users, trips, and day cards, with appropriate indexing to optimize query performance. This setup aligns with the MongoDB workshops, which highlight the advantages of NoSQL databases for managing hierarchical and dynamic data. We found that displaying data appropriately was a needed element in ensuring our application was flexible with different views.

Streamlined Deployment with Render

Our application is deployed on Render, a cloud platform that automates the CI/CD pipeline. We configured Render to handle automatic builds and deployments for both the front-end and back-end. Environment variables are securely managed within Render’s dashboard, ensuring sensitive information is protected. This deployment strategy reflects the best practices discussed in the release engineering workshop, ensuring our application remains up-to-date and scalable.

Ensuring Security with Networking Practices

We implemented secure user authentication and authorization mechanisms using JSON Web Tokens (JWT). Middleware functions were added to verify tokens and protect routes, ensuring that only authenticated users can access certain endpoints. This approach aligns with the networking workshop’s guidelines on securing APIs and managing user sessions, providing a secure and reliable application.

Conclusion

Our project integrates the full MERN stack, adhering to best practices and utilizing each technology to its full potential. From configuring a solid development environment and building a dynamic front-end with React, to developing a robust back-end with NodeJS and Express, managing data with MongoDB, and deploying seamlessly on Render, our application showcases a comprehensive understanding of modern web development techniques. This technical depth ensures our application is performant, secure, and scalable.

Above and Beyond

Next Steps

List of Contributions

Andrew

Bhag

Daniel

EVERYTHING BELOW WAS FOR PROGRESS 1

Who is it for?

SoloExplorer is designed for solo travelers, particularly those in their 20s and 30s, who seek an efficient and enjoyable way to plan their individual trips.

What will it do?

The platform will facilitate various aspects of solo travel planning, with a primary focus on itinerary creation. It will support users in documenting their trips, accessing travel tips, and connecting with other solo travelers.

What type of data will it store?

SoloExplorer will store user profiles, trip itineraries, travel journals, reviews, and multimedia content such as photos and videos.

What will users be able to do with this data?

Users will be able to:

Additional functionalities could include:

Task Requirements

Minimal Requirements (Will Definitely Complete)

User Authentication and Dashboard Management:

Create a user-friendly interface for creating and managing detailed travel itineraries.

Mapping and Route Planning:

Standard Requirements (Will Most Likely Complete)

Travel Dashboard:

Responsive Design:

Itinerary Sharing and Downloading:

Basic User Interface (UI) Enhancements:

Stretch Requirements (Plan to Complete at Least 1)

Community-Based Planning:

Personalized Travel Recommendations:

Task Breakdown

Minimal Requirement 1: Itinerary Creation and Management

Create Itinerary Interface:

Design the itinerary creation form layout using React (3 Story Points)
Implement state management for the form using Redux (5 Story Points)
Connect the form to the backend for data submission (3 Story Points)
Implement validation and error handling (3 Story Points)

Develop Itinerary Management Features:

Implement the itinerary viewing component using React (3 Story Points)
Implement state management for itinerary data using Redux (5 Story Points)
Implement itinerary detail view (3 Story Points)

Minimal Requirement 2: User Authentication and Dashboard Management

Set Up User Authentication:

Implement the user registration form using React (3 Story Points)
Implement state management for the registration form using Redux (5 Story Points)
Connect the registration form to the backend for user sign-up (3 Story Points)
Implement validation and error handling (3 Story Points)

Develop User Dashboard Page:

Implement the user profile page layout using React (3 Story Points)
Implement state management for the profile page using Redux (5 Story Points)
Implement profile update functionality (3 Story Points)
Implement validation and error handling for profile updates (3 Story Points)

Describe your topic/interest in about 150-200 words

Are you dreaming of a multi-country adventure but are overwhelmed by planning? SoloExplorer empowers travelers to ditch the chaos and craft unforgettable solo journeys.

Ditch the spreadsheets and endless travel blog rabbit holes! SoloExplorer empowers you, the intrepid solo traveler, to conquer the burdens of planning and craft unforgettable adventures.

Our platform streamlines the process, letting you build detailed itineraries for your multi-country dream escapes. Imagine having everything in one place: meticulously crafted routes, travel journals overflowing with stories, photos capturing memories, and reviews to guide you, the most efficient ways to get from A to B - stretching your budget. Plus, SoloExplorer goes beyond planning – it fosters connection. Share your itinerary with fellow explorers or keep it private.

Join a thriving solo travel community where you can swap stories, ask questions, and glean valuable insider tips – the kind that unlocks hidden gems and transforms your trip. Plan smarter, travel bolder. SoloExplorer: Your adventure awaits.

Team Members

Images

Screen Shot 2024-06-02 at 7 20 35 PM