• Stars
    star
    154
  • Rank 242,095 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 10 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Split expenses with friends.

SplitMe

CircleCI

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

Staging

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

  1. Update the package.json version.
  2. Build the app
  3. 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.
  4. Go into Xcode build for the Generic iOS Device.
  5. Product > Archive.
  6. Upload to App Store
  7. Make sure you have been invited in the SplitMe organization.
  8. 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!

More Repositories

1

react-swipeable-views

A React component for swipeable views. ❄️
JavaScript
4,450
star
2

babel-plugin-transform-react-remove-prop-types

Remove unnecessary React propTypes from the production build. 🎈
JavaScript
898
star
3

serviceworker-webpack-plugin

Simplifies creation of a service worker to serve your webpack bundles. ♻️
JavaScript
458
star
4

babel-plugin-react-remove-properties

Babel plugin for removing React properties. 💨
JavaScript
380
star
5

react-event-listener

A React component for binding events on the global scope. 💫
JavaScript
359
star
6

a-journey-toward-better-style

A Journey toward better style
JavaScript
263
star
7

i18n-extract

Manage localization with static analysis. 🔍
JavaScript
170
star
8

browser-metrics

A collection of metrics tools for measuring performance ⚡️
JavaScript
125
star
9

babel-plugin-transform-dev-warning

Remove development warning from production code
JavaScript
15
star
10

react-benchmark

Environment to benchmark React Component 🏁
JavaScript
14
star
11

react-with-styles-interface-jss

Interface to use react-with-styles with JSS. 🐠
JavaScript
12
star
12

plume

Plume is an accurate indoor tracking system which uses the power of magnetic fields to compute a device's position and orientation. We are aiming at an accuracy of less than a centimeter for the position, and less than a degree for the orientation.
C
9
star
13

material-ui-generate-css-file

CSS
5
star
14

Kinect

Kinect processing
Java
4
star
15

Salonrama

PHP
3
star
16

mui-olivier-tools

TypeScript
3
star
17

mui-merge

test-repo
JavaScript
2
star
18

ELEC222

Architectures reconfigurables et langages HDL
VHDL
2
star
19

ELEC223

Pratique des systèmes à microprocesseurs
C
2
star
20

react-conf-2024-pigment-css

TypeScript
2
star
21

toolpad-issue-2340

https://github.com/mui/mui-toolpad/issues/2340
2
star
22

bug-markdown-release

2
star
23

AirDJ

AirDJ est un logiciel qui permet de mixer de la musique à partir du mouvement des mains, grâce à une kinect.
Java
2
star
24

test-appsmith

1
star
25

appsmith-git-sync

1
star
26

SplitMeBord

Présentation pour le cours de SIM203 - Entrepreneuriat
JavaScript
1
star
27

fooc-nextjs-css-modules

TypeScript
1
star
28

tmp

1
star
29

next-55817

CSS
1
star