Quotrek is a React-based travel tracking application that allows users to log their travel experiences, track visited cities, and visualize their journeys on an interactive map. The app integrates Clerk for authentication and Supabase for data storage, ensuring a secure and seamless user experience.
- User Authentication: Secure login and signup functionality powered by Clerk.
- Dynamic Navigation: Navigation adapts based on user authentication state.
- City Tracking: Add, view, and manage cities you've visited.
- Country Overview: Explore countries based on your travel history.
- Interactive Map: Visualize your travel history on a map.
- Responsive Design: Fully responsive layout for desktop and mobile devices.
- Custom Styling: Styled with CSS modules for scoped and maintainable styles.
- Frontend: React, React Router
- Authentication: Clerk
- Database: Supabase
- Styling: CSS Modules
- Build Tool: Vite
Demo Video quotrek demo.webm
src/
├── assets/ # Static assets (e.g., images, fonts)
├── components/ # Reusable UI components
├── pages/ # Page-level components
├── data/ # Static data (e.g., JSON files)
├── App.jsx # Main application component
├── main.jsx # Application entry point
├── index.css # Global styles
├── App.css # App-specific styles
-
Clone the repository:
git clone https://github.com/Jonniie/quotrek.git cd quotrek -
Install dependencies:
npm install
-
Create a
.envfile in the root directory and add the following environment variables:VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
-
Start the development server:
npm run dev
-
Open the app in your browser at
http://localhost:5173.
- Users can sign up or log in using the Clerk-powered authentication system.
- After logging in, users are redirected to the
/approute.
- Add cities you've visited, along with notes and travel dates.
- View your travel history in a list or on an interactive map.
- The navigation bar dynamically updates based on the user's authentication state:
- Logged Out: Links to "Login" or "Signup".
- Logged In: Links to "Dashboard".
-
Build the app for production:
npm run build
-
Deploy the
dist/folder to your hosting provider (e.g., Vercel, Netlify). -
Ensure the environment variables are configured in your hosting platform.
| Variable | Description |
|---|---|
VITE_CLERK_PUBLISHABLE_KEY |
Clerk publishable key for authentication |
VITE_SUPABASE_URL |
Supabase project URL |
VITE_SUPABASE_ANON_KEY |
Supabase anonymous key |
- Defines the main routes of the application using
react-router-dom.
- Dynamic navigation bar that adapts based on the user's authentication state.
- Handles both login and signup functionality using Clerk's
SignInandSignUpcomponents.
- Main dashboard layout that integrates the sidebar, map, and user data.
- Displays user information, navigation links, and a list of tracked cities.
- CSS Modules: Scoped styles for each component to avoid class name conflicts.
- Global Variables: Defined in
index.cssfor consistent theming. - Custom Fonts: Includes the
Qurovafont for branding, defined inLogo.module.css.
react: Frontend libraryreact-router-dom: Routing@clerk/clerk-react: Authentication@supabase/supabase-js: Database integration
vite: Build tooleslint: Linting
This project is licensed under the MIT License. See the LICENSE file for details.