A mobile app that allows nearby individuals to group online orders into one shipment to reduce their carbon footprint, split the cost of shipping, and save money through bulk purchasing.
- the carbon footprint of individually mailed packages from the packaging and environmental cost of individually transporting items
- the rise of eCommerce and online consumerism with the digital age and accelerated by the COVID-19 pandemic
- living in proximity with many friends on a University campus with no platform to coordinate group purchases
- the undercover group purchases that happen on platforms like Reddit and WeChat with no platform formally and securely conduct these transactions
- our passion for trying to achieve free shipping status on our online purchases
- Allow users to join and create sessions based on non-urgent online shopping purchases to reduce their environmental footprint from ordering numerous smaller packages, potentially save some money through bulk purchases, and split the cost of shipping
- Home Page all of the users hosted sessions and sessions they have contributed to keeping track of their state
- Browse Page allows users to browse active sessions with their details and join sessions to contribute to
- Create Page allows users to create and host a new session filling out a form with the details of their new session
- Profile Page allows users to view the details of their profile
Express
server written usingNodejs
that implements theAxios
library to interact with ourDataStax
tables- REST API endpoints for CRUD operations to interact with the database
POST
endpoint hits Courier API to send text message notifications on update using the Courier x Twilio integration
users table:
id: uuid,
name: text,
phone_number: text,
email: text,
address: text,
pfp: text,
rating: int
active_sessions table
active_sessions
id: uuid,
deadline: text,
current_shipping_price: float,
current_cart_price: float,
num_people: int,
max_people: int,
emial: text,
users: list<uuid>,
items: list<list<text>>,
host: uuid,
state
(Also, a past_sessions
table with the same columns as the active_sessions
table)
active_sessions
states and their meaning:
collecting
: open session and others are free to joinpending
: a new user joined the session and the prices/info is pending approval and update from the host of the sessionclosed
: no one else can join the session and waiting for the host to prompt for paymentspayments
: host is collecting payments to hold in the application for all users who joined the sessionordered
: all payments have been collected and stored in the application and the host verifies that they have ordered the productpickup
: items have arrived and the host indicates that they are ready for pickup
- Cross-platform application written using Flutter
- Leverages Material UI theme for cohesive look
- State management and state passing using MobX
- Live and dynamic based on server side logic
- the learning curve associated with using Flutter, DataStax, and Courier for the first time
- collaborating virtually to complete the project by making good use of Git
- working on documentation to pass over backend config to help with integration frontend <> backend integration
- storing and preserving state in
Flutter
across pages - creating custom queries to retrieve data in the backend: e.g. getting all contributors to a session who are not hosting
- setting up our environment to develop in Flutter in different operating systems 😅
Android Studio emulators
- successfully integrating
DataStax
into our application - utilizing built-in Flutter components for a clean (relative to our past hackathon projects) UI
- maintaining backend documentation throughout the hackathon
- taking on a very large project for the hackathon and planning out a realistic POC to complete for the 24 hours of hacking
- compartmentalizing and delegating tasks to best make use of our individual skillsets
- successfully pair programming virtually using Live Share (not really an accomplishment but this was fun) 😀
- how to manage and preserve state through
Flutter
components and pages - how to make and interact with
DataStax
tables - a lot of planning and initial prioritization of tasks to reflect on
- integrating with a service to allow for secure payment sending, holding in the application, and transfer upon state change in the application (we thought about using
Stripe
for this) - refining user table related operations: allow the user to update fields in their profile
- adding a social aspect to the application: allow users to add friends, set sessions to private (only for friends to see)
- more filters on the browse page: by geographic location, by store, by type of store, and eventually providing recommendations based on past purchases
- incentivize hosts to create sessions: determining and creating a model for hosts to gain a bit of commission for efforts in hosting the sessions
- automating and integrating with eCommerce websites to import images and prices directly from URL's to avoid as much manual input of prices (another idea is to make a browser extension to automatically host sessions from )
- extending from mobile to also have a web application for ease of access
- allowing users to select what kind of notifications they would like to receive (email, push, text) and supporting them - also more custom messages based on state (adding the actionable in the notification e.g. ready for pickup)
Domain.com domain name idea: 💡
shipmates.tech