SpotSpot is a web application that helps you track, organize, and rate your favorite places. Create lists of spots you want to visit and track the ones you've already been to. Like Letterboxd but for places to go and things to do!
- Create Lists: Organize your spots in different categories or lists (restaurants, parks, attractions, etc.)
- Track Spots: Add places you want to visit with location data from Google Maps
- Rating System: Rate and review places you've visited
- Tagging System: Add custom tags to your spots for better organization and filtering
- Filtering Options: Filter spots by tags or visited status
- User Authentication: Secure authentication system for personalized experience
- Frontend: React 19 with TypeScript
- UI Framework: TailwindCSS 4
- Backend: Astro with Node.js
- Database: Turso (SQLite-based)
- Authentication: Better Auth
- ORM: Drizzle
- API Integration: Google Maps Places API
- State Management: Zustand, TanStack Query
- Node.js (v20 or higher recommended)
- A Turso database account and authentication token
- Google Maps API key with Places API enabled
Create a .env file in the root directory with the following variables:
TURSO_DATABASE_URL=your_turso_database_url
TURSO_AUTH_TOKEN=your_turso_auth_token
PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_api_key
-
Clone the repository
git clone https://github.com/yourusername/spotspot.git cd spotspot -
Install dependencies
npm install
-
Set up the database
npx drizzle-kit push
-
Start the development server
npm run dev
-
Open your browser and navigate to
http://localhost:4321
/src- Source files/components- React components/app- Application-specific components/stores- Zustand stores/hooks- Custom React hooks/viewer- Components for viewing lists and spots
/lib- Utility functions and libraries/db- Database configuration and schema/auth- Authentication setup
/pages- Astro pages/api- API endpoints
- Click the "New List" button in the controls section
- Enter a name for your list
- Click "Create List"
- Select a list from the viewer
- Click the "New Spot" button
- Enter the spot name and click "Create Spot"
- Click on the newly created spot to edit its details:
- Add location information using Google Maps integration
- Add notes, tags, and a rating if you've visited
- Mark spots as visited by checking the visited checkbox
- Rate visited spots using the 5-star rating system
- Add tags to spots for better organization
- Filter spots by tags or visit status using the filters panel
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Astro - The web framework
- React - The UI library
- TailwindCSS - For styling
- Zustand - State management
- TanStack Query - Data fetching and caching
- Drizzle ORM - ORM for Turso database
- Turso - SQLite database in the cloud
- Better Auth - Authentication library
- Google Maps API - For location functionality