PackRat
PackRat is a versatile adventure planner tailored for outdoor enthusiasts. It simplifies the process of organizing trips from a simple day hike to cross-country journeys.
Install / Use
/learn @PackRat-AI/PackRatREADME
PackRat 🎒
PackRat is the ultimate adventure planner designed for those who love to explore the great outdoors. Our app helps users plan and organize their trips with ease, whether it's a weekend camping trip, a day hike, or a cross-country road trip.
With PackRat, you can create and manage trips, discover new destinations, and stay informed with up-to-date weather forecasts. Our app integrates with Mapbox to provide you with accurate maps and directions to your destinations, as well as suggestions for popular outdoor activities based on the location and season of your trip.
So pack your bags, grab your friends, and get ready for your next adventure with PackRat!
[!NOTE] This project is currently in alpha. Please report any issues or bugs you encounter. Thank you for your patience and support!
[!IMPORTANT] This project is still in development and may contain bugs or issues. Please use the app with caution and report any problems you encounter. Thank you for your understanding and cooperation.
Build & CI:
Repository Info:
Table of Contents
- PackRat 🎒
- Table of Contents
- Overview 🌐
- Documentation 📚
- Features 🚀
- Technologies used 💻
- 🗂 Folder layout
- 🆕 Add new dependencies
- Dependency management
- Local installation 📲
- API Architecture
- Contributing 🤝
- User Stories:
- User Features:
- Pack Features:
- Trip Features:
- Items Feature:
- Feed Feature:
- 👏 Special Thanks
- License 📝
Overview 🌐
With PackRat, you can:
- Create and manage trips.
- Discover new destinations.
- Stay informed with up-to-date weather forecasts.
- Access accurate maps and directions with our integration to Mapbox.
- Get suggestions for popular outdoor activities based on your trip's location and season.
So pack your bags, grab your friends, and get ready for your next adventure with PackRat!
Documentation 📚
<div align="center"> </div>[!WARNING] While the app is in alpha, please be aware that there may be bugs or issues. We appreciate your patience and support as we work to improve the app. Data may be lost or corrupted during this time, so please use the app with caution. Thank you for your understanding and cooperation.
Features 🚀
- Create and manage trips: users can create new trips and manage existing ones by adding details such as dates, locations, and activities.
- Map integration: PackRat integrates with Mapbox to provide users with accurate maps and directions to their destinations.
- Activity suggestions: the app suggests popular outdoor activities based on the location and season of the trip.
- Packing list: users can create and manage packing lists for their trips to ensure they have everything they need.
- Weather forecast: PackRat provides up-to-date weather forecasts for the trip location to help users prepare accordingly.
- User authentication: the app uses user authentication to ensure privacy and data security.
Technologies used 💻
PackRat is built using the following modern technologies:
- React Native + Expo: Cross-platform mobile development with Expo Router
- Next.js: Server-side rendering for web applications (landing page and guides)
- Hono.js: Fast, lightweight web framework running on Cloudflare Workers
- PostgreSQL + Drizzle ORM: Type-safe database operations with Neon serverless database
- Jotai + TanStack Query: Modern state management and data fetching
- AI SDK + OpenAI: AI-powered features and content generation
- Bun: Fast JavaScript runtime and package manager
- Biome: Modern linting and formatting toolchain
- TypeScript: Full type safety across the entire stack
- Tailwind CSS + NativeWind: Utility-first styling for web and mobile
- Mapbox: Location data platform for mobile and web applications
🗂 Folder layout
The main folders are:
-
apps/- Applicationsexpo/- React Native mobile app with Expo Routerapp/- App router screens and layoutsfeatures/- Feature-based modules (auth, packs, etc.)components/- Reusable UI componentsatoms/- Jotai atoms for global stateproviders/- React context providerslib/- Utility libraries and configurationsassets/- Images, fonts, and other static assets
landing/- Next.js landing page websiteguides/- Next.js documentation and guides site
-
packages/- Shared packages across appsapi/- Hono.js API server running on Cloudflare Workerssrc/- Source code with routes, middleware, and servicesdrizzle/- Database schema and migrationstest/- API tests
ui/- Shared UI components and design system
🆕 Add new dependencies
Pure JS dependencies
For pure JavaScript libraries that work across all platforms (mobile, web, API):
# Install in the root to share across all apps
bun add lodash
# Or install in specific package if only used there
cd packages/api
bun add dayjs
These dependencies work without platform-specific code and can be safely used in any JavaScript environment.
Native dependencies
For React Native modules that require platform-specific code (Android/iOS):
cd apps/expo
bun add react-native-reanimated
# Don't forget to rebuild after adding native dependencies
bun --cwd apps/expo run expo prebuild --clean
Native dependencies often require additional configuration and may need platform-specific setup. Always check the library's installation guide for React Native.
Mobile app dependencies
For React Native dependencies, install them in the Expo app:
cd apps/expo
bun add react-native-reanimated
API dependencies
For API/server dependencies:
cd packages/api
bun add hono
Web app dependencies
For Next.js apps (landing/guides):
cd apps/landing # or apps/guides
bun add next
Dependency management
Use ManypKG to check for dependency issues across the monorepo:
bun check:deps
bun fix:deps
Local installation 📲
PackRat is a modern monorepo with mobile, web, and API applications. Follow the steps below to install and run the applications.
Dependencies
- Bun - Primary package manager and runtime
- Node.js - Required for some tooling
- Expo CLI - For mobile development
- Wrangler CLI - For API deployment
- GitHub CLI - For authenticating with GitHub packages
GitHub Packages Authentication
PackRat uses private packages from GitHub Package Registry. You need to authenticate to install dependencies:
Local Development
-
Install GitHub CLI:
# macOS brew install gh # Windows winget install --id GitHub.cli # Linux - see https://github.com/cli/cli#installation -
Authenticate with GitHub CLI:
