DcaPal is a pragmatic Dollar Cost Averaging tool for passive investors like me: financially-educated people managing their own portfolios of not-too-many assets replicating major world indices.
I was facing a common problem: it's that time of the month, got some savings to invest and have to split them across my portfolio assets. How the heck can I do it so that my portfolio stays balanced?
Hence DcaPal. You come here every week/month/quarter, build your portfolio, define asset allocation in percentage, input how much you want to invest and let the algorithm do the splitting for you.
demo-dcapal.mov
You can start using DcaPal right away. It's free. No registration required.
Build your own portfolio or, if you don't know where to start, explore our Demo portfolios:
DcaPal does not store any user data. But if you are still concerned for your privacy, you can build and run it on your machine.
Start Docker environment
- Setup the
.envfile
cp dcapal-backend/.env.example dcapal-backend/.env- Setup a password for the db and the JWT secret (you can use
openssl rand -base64 32to generate a random string) in the new.envfile
POSTGRES_PASSWORD=<replace-with-your-pwd>
JWT_SECRET=<generated_secret>- Start the Docker environment
make dev-up(Note: if you're using a Mac with an ARM processor, you should replace (in the docker-compose dev file) Cadvisor's image version with gcr.io/cadvisor/cadvisor:v0.47.1 and set platform: linux/aarch64)
Run DcaPal backend
Prepare dcapal.yml config file
cd dcapal-backend
cp config/dcapal/dcapal.yml dcapal.ymlCompile and start backend service
cargo run --releaseRun DcaPal frontend
Build DcaPal Optimizer
cd dcapal-optimizer-wasm
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
wasm-pack build --releaseInstall NPM dependencies. Note: this is installing dcapal-optimizer-wasm package as well.
cd ../dcapal-frontend
npm install # Install dcapal-optimizer-wasm pkg as wellRun frontend server
npm run startflowchart LR
Frontend[Frontend] ---|"/api/external/search?q={query}<br>/api/external/chart/${symbol}"|nginx[nginx]
subgraph dcapal.com
nginx---TradFiProvider[TradFi Provider]
nginx---Backend[Backend]
Backend---CryptoProvider[Crypto Provider REST API]
Backend---|"/assets/fiat<br>/assets/crypto<br>/price/{base}?quote={quote}"|Redis[Redis]
end
Contributions and suggestions about how to improve this project are welcome! Please follow our contribution guidelines.
Born as a personal Sunday morning project, DcaPal would have never grown so much without the help of heros willing to contribute with their time and work. Thank you very much ya all!