SplitMe
Split expenses with friends
The app
Description
Use SplitMe to share group bills and make sure that everyone gets paid back.
Split household bills with roommates, figure out costs for a group trip, remember when a friend spots you for lunch.
Features
- Multiple groups
- Multiple currencies
- Expenses log
- Minimal number of transactions to settle debts within a group
- Export/Import data
- No ads
Screenshots
The technology stack
To achieve high performance and flexibility, we use the following elements:
- React
- Service worker
- Server side rendering
- Code splitting
- Inlining of the critical CSS thanks to CSS-in-JS
- Cordova iOS & Android
- A CDN
Install
npm install -g pouchdb-server
npm install
cd cordova
../node_modules/.bin/cordova prepare
Test
npm install selenium-standalone -g
selenium-standalone install
Android
brew install android-sdk
iOS
brew install graphicsmagick
npm run cordova:icons
npm run cordova:imagemin
Development
npm start
pouchdb-server
Environement
Production
- Browser splitme.net
- Android Google Play
- iOS Apple Store
Staging
- Browser staging.splitme.net
Screenshot
Android
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png
iOS
cmd
+ s
Redux
Action name
Use the FSA standard.
use action name linked to the action triggered by the user. The action name shouldn't be link to the mutation of the store needed.
Exception, the action is used in only one reducer and the mutation is duplicated by other action in this same reducer. Then the action name can be linked to the store mutation
Release process
iOS
- Update the package.json version.
- Build the app
- You may encounter this error No matching provisioning profile found. Ask your team for it. You need the provisioning profile and the associated signin key.
- Go into Xcode build for the Generic iOS Device.
- Product > Archive.
- Upload to App Store
- Make sure you have been invited in the SplitMe organization.
- Make sure you are an App Manager with your iTunes Connect account.
Contributing
Changes and improvements are more than welcome! Feel free to fork and open a pull request. Please make your changes in a specific branch and request to pull into master!