How onjie1204/hiddenmy works
This Laravel application supports discovering and contributing Malaysian hidden gems, then building travel posts and itineraries around places. The browser client routes users through authentication, maps, gem details and submissions, and travel planning; feature API modules communicate with Laravel endpoints. On the server, controllers implement domain actions over relational models, with integrations for storage and geographic data. Community reports and votes, user achievements, and account features are parallel capabilities. The README is empty, and sampled controller excerpts are partial, so some subsystem wiring is omitted.
Main entry points: Location.php Domain models · api.php API routes · App.jsx App router · HiddenGemController.php Gem management
Components 27
Web client
- App router
laravel/resources/js/App.jsx - Gem pages
laravel/resources/js/pages/hidden-gems/HiddenGems.jsx - Gem API client
laravel/resources/js/features/hidden-gems/api.js - Travel pages
laravel/resources/js/pages/travel/TravelPosts.jsx - Travel API client
laravel/resources/js/features/travel/travelPostsApi.js - Account pages
laravel/resources/js/pages/auth/Login.jsx - Account API client
laravel/resources/js/features/auth/api.js
Hidden gems
- Gem routes
laravel/routes/api/hidden-gems.php - Gem management
laravel/app/Http/Controllers/HiddenGems/HiddenGemController.php - Gem search
laravel/app/Services/HiddenGems/HiddenGemSearch.php - OSM attraction sync
laravel/app/Console/Commands/HiddenGems/SyncOsmAttractions.php - Overpass client
laravel/app/Integrations/OpenStreetMap/OverpassClient.php - Attraction cache
laravel/app/Services/HiddenGems/OsmAttractionCache.php
Travel planning
- Travel routes
laravel/routes/api/travel.php - Travel posts
laravel/app/Http/Controllers/Travel/TravelPostController.php - Itineraries
laravel/app/Http/Controllers/Travel/TripItineraryController.php
Accounts and community
- API routes
laravel/routes/api.php - Auth routes
laravel/routes/api/auth.php - Authentication
laravel/app/Http/Controllers/Auth/AuthController.php - Community reports
laravel/app/Http/Controllers/HiddenGems/ReportController.php - Achievements
laravel/app/Services/Achievements/SpecialAchievementService.php - Domain models
laravel/app/Models/Location.php - Relational database
- Object storage
laravel/app/Integrations/Storage/SupabaseStorage.php
Other components
- Traveler
- Supabase storage
- OpenStreetMap
Connections 31
- Traveler → App router: uses
- App router → Gem pages: routes to
- App router → Travel pages: routes to
- App router → Account pages: routes to
- Gem pages → Gem API client: requests data
- Travel pages → Travel API client: requests data
- Account pages → Account API client: requests account
- Gem API client → API routes: calls API
- Travel API client → API routes: calls API
- Account API client → API routes: calls API
- API routes → Gem routes: loads routes
- Gem routes → Gem management: dispatches
- API routes → Travel routes: loads routes
- Travel routes → Travel posts: dispatches
- Travel routes → Itineraries: dispatches
- API routes → Auth routes: loads routes
- Auth routes → Authentication: dispatches
- Gem management → Domain models: reads and writes
- Travel posts → Domain models: reads and writes
- Itineraries → Domain models: reads and writes
- Authentication → Domain models: manages users
- Domain models → Relational database: persists records
- Gem management → Object storage: uploads photos
- Travel posts → Object storage: uploads photos
- Object storage → Supabase storage: stores objects
- OSM attraction sync → Overpass client: fetches attractions
- Overpass client → OpenStreetMap: queries data
- OSM attraction sync → Attraction cache: updates cache
- Gem management → Gem search: searches gems
- Community reports → Domain models: records reports and votes
- Achievements → Domain models: tracks achievements