As the title suggests, Whaley is the most complicated personal project I have ever worked on.
I was kinda sick of the very few and very bad written (and looking) solutions out there for non KYC (Know Your Customer) platform where you could safely trade Bitcoin
So I decided to build my own.
Before starting I had to research a lot how to properly build a P2P platform, how to make it secure and how to make it scalable.
The whole Bitcoin protocol was kinda new to me on the low level, so I decided to use the
bitcoinjs library to do the whole heavy-lifting for me.
The whole "secure, non custodial, exchange" part is handled by the escrow address created with 3 keys and the P2SH script, you can read more about it
here.
The stack was completely deployed on AWS:
- Fargate for the backends
- EC2 instances for the Mongo instances (replicaset)
- S3 for uploads and the frontend
- Route53 for the DNS
- CloudFront for the CDN
- CloudWatch for the logs
- SES for the emails
- ACM for the SSL certificates
- CloudFormation for the infrastructure
About the more "technical" part, I decided to use:
- React as the frontend library
- TailwindCSS (DaisyUI) as the CSS framework
- Typescript as the backend language (100% test coverage with Jest!)
- MongoDB as the database