https://github.com/namek/fundshare
💰 Web-hosted app for sharing expenses - my playground for Elm and F#
https://github.com/namek/fundshare
elm
Last synced: 11 months ago
JSON representation
💰 Web-hosted app for sharing expenses - my playground for Elm and F#
- Host: GitHub
- URL: https://github.com/namek/fundshare
- Owner: Namek
- Created: 2018-10-25T21:17:19.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-02-14T23:27:37.000Z (over 6 years ago)
- Last Synced: 2025-04-30T10:13:54.840Z (about 1 year ago)
- Topics: elm
- Language: Elm
- Homepage:
- Size: 5.41 MB
- Stars: 4
- Watchers: 0
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Fundshare
App for sharing expenses to keep up with the current balance between people.

# How to: Build and host
A) Run application with a database using Docker Compose:
1. Copy `Backend/AppConfig.fs__prod` to `Backend/AppConfig.fs`
2. (optional) Copy `Frontend/src/elm/I18n/I18n.elm.template` to `Frontend/src/elm/I18n/I18n.elm`. Edit "import" in copied file to choose localization. Default is EUR.
3. (optional) you may want to change ports in `docker-compose.yml`
4. `docker-compose build`
5. `docker-compose up -d`
6. http://127.0.0.1:5000 should be available then.
OR
B) Run only the application (no Docker containers):
1. Copy `AppConfig.fs__prod` to `AppConfig.fs` (for security, change `Auth.tokenEncryptionKey` and `Auth.passwordSalt`)
2. (optional) Copy `Frontend/src/elm/I18n/I18n.elm.template` to `Frontend/src/elm/I18n/I18n.elm`. Edit "import" in copied file to choose localization. Default is EUR.
3. Set `DB.host = 'host.docker.internal'` inside `AppConfig.fs`
4. `docker build -t fundshare-app`
5. `docker run -it -p 127.0.0.1:8080:5000 fundshare-app`
6. http://127.0.0.1:8080 should be available then.
## Database
### Import
To run .sql file on database docker:
`cat dump.sql | docker exec -i fundshare_db_1 psql -U postgres -d fundshare_prod`
### Create backup
``docker exec -t -u postgres fundshare_db_1 pg_dump fundshare_prod -c > /fundshare_backup_dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql``
# How to: Development
## Frontend
* nodejs, npm
* [dotnet-script](https://github.com/filipw/dotnet-script)
```
npm i -g npx
npm i -g @dillonkearns/elm-graphql
dotnet tool install -g dotnet-script
```
Now you can pick some options:
* `build` frontend
* `watch` for changes to rebuild
* rebuild frontend `api`, i.e. generate Elm code for GraphQL API based on `graphql_schema.json` (which is generated by backend on start if specific flag is configured in `AppConfig.fs`)
* `debug` to provide Elm's messaging debugger
Usually it goes: `dotnet script build.csx -- build debug watch`.
When GraphQL API is changed in the backend code then run `dotnet script build.csx -- api build`.
## Backend
Ensure the [.NET Core 2.1 SDK](https://www.microsoft.com/net/download) is installed.
* To build and publish an executable:
`cd Backend && dotnet publish`
* While developing, you can simply open `Backend.sln` with Visual Studio 2017 and run in debug mode.