❯ Modern rideshare platform for school communities
- Overview
- Features
- Project Structure
- Getting Started
- Project Roadmap
- Contributing
- License
- Acknowledgments
carp.school is a comprehensive rideshare application built with Meteor.js and React, designed specifically for school communities. The platform enables students, faculty, and staff to create and join carpools with real-time chat, interactive map integration, and native mobile support for iOS and Android.
The application leverages modern web technologies including styled-components for UI, OpenMapTiles for mapping, and Cordova for native mobile functionality. With features like UUID-based place references, comprehensive error handling, and skeleton loading states, carp.school provides a polished user experience across all platforms.
| Feature | Summary | |
|---|---|---|
| ⚡ | Real-time Chat | In-ride messaging with live updates and participant management |
| 📱 | Native Mobile | iOS/Android apps with native navigation bars and optimized UX |
| 🗺️ | Interactive Maps | OpenMapTiles integration with route planning via OSRM |
| 👤 | User Profiles | Photo uploads, profile management, and user authentication |
| 🏠 | Place Management | Save frequently used locations with UUID-based references |
| 🎨 | Modern UI | Responsive design with skeleton loading states and error boundaries |
| 🔒 | Secure Auth | SVG CAPTCHA verification and secure user authentication |
| 🚗 | Ride Management | Create, join, and manage carpools with shareable invite codes |
| 🛠️ | Developer Tools | Comprehensive testing utilities and component documentation |
| 🌐 | External Services | TileServer, Nominatim, and OSRM integration for mapping features |
└── carp.school/
├── app/ # Main Meteor application
│ ├── imports/
│ │ ├── api/ # Backend collections & methods
│ │ │ ├── accounts/ # User authentication
│ │ │ ├── chat/ # Real-time messaging
│ │ │ ├── places/ # Location management
│ │ │ ├── profile/ # User profiles
│ │ │ └── ride/ # Rideshare functionality
│ │ └── ui/
│ │ ├── mobile/ # Mobile-specific components
│ │ │ ├── components/ # Mobile UI components
│ │ │ ├── ios/ # Native iOS components
│ │ │ ├── pages/ # Mobile page components
│ │ │ └── styles/ # Mobile styled-components
│ │ ├── desktop/ # Desktop-specific components
│ │ ├── liquidGlass/ # Component library
│ │ ├── skeleton/ # Loading skeleton components
│ │ └── test/ # Component testing & demos
│ ├── plugins/ # Cordova plugins
│ │ └── cordova-plugin-native-navbar/ # Custom iOS navbar
│ ├── public/ # Static assets
│ ├── client/ # Client entry point
│ └── server/ # Server entry point
├── tools/ # Development utilities
│ ├── checkRefs.py # Import validation
��� ├── read_terminal.applescript # Terminal integration
│ └── write_terminal.applescript
├── config/ # Application settings
├── docker-compose.yml # Development environment
└── runner.sh # Unified development interfaceBefore getting started with carp.school, ensure your runtime environment meets the following requirements:
- Node.js: Version 14 or higher
- Meteor: Version 3.3.0 (Install Meteor)
- Package Manager: npm (included with Node.js)
- Mobile Development (Optional):
- iOS: Xcode, iOS Simulator
- Android: Android Studio, Android SDK
- Container Runtime: Docker (for production deployment)
Install carp.school using the following method:
- Clone the repository:
❯ git clone https://github.com/zlc1004/Carpool- Navigate to the app directory:
❯ cd Carpool/app- Install Meteor dependencies:
❯ meteor npm install- Optional - Set up external services:
❯ cd .. && ./install.sh # Sets up TileServer, Nominatim, OSRMRun carp.school in different modes:
❯ cd app && npm start # Web development server
❯ cd app && npm start ios # iOS development with simulator
❯ cd app && npm start android # Android development❯ cd app && npm start prod # Production build with DockerDevelopment Tools
❯ cd app && npm run lint # Check code quality
❯ cd app && npm run lint:fix # Auto-fix linting issuesThe application will be available at:
- Web:
http://localhost:3001 - MongoDB:
mongodb://127.0.0.1:3002/meteor
carp.school includes comprehensive component testing and demos:
❯ cd app && npm start
❯ # Navigate to http://localhost:3001/_test for component demosAvailable Test Pages:
- Component Library: Desktop & mobile component showcase
- Skeleton Components: Loading state demonstrations
- LiquidGlass Components: UI component library
- Mobile Navigation: iOS/Android navigation testing
- 💬 Join the Discussions: Share your insights, provide feedback, or ask questions.
- 🐛 Report Issues: Submit bugs found or log feature requests for the
Carpoolproject. - 💡 Submit Pull Requests: Review open PRs, and submit your own PRs.
Contributing Guidelines
- Fork the Repository: Start by forking the project repository to your github account.
- Clone Locally: Clone the forked repository to your local machine using a git client.
git clone https://github.com/zlc1004/Carpool
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear message describing your updates.
git commit -m 'Implemented new feature x.' - Push to github: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
- Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
This project is protected under the MIT License. For more details, refer to the LICENSE file.
- Meteor.js - Full-stack JavaScript platform
- OpenMapTiles - Vector map tiles and hosting
- Nominatim - Geocoding and search functionality
- OSRM - Route calculation and optimization
- React - UI component framework
- styled-components - CSS-in-JS styling solution
- Semantic UI React - UI component library