SafeTrust is a decentralized platform designed to revolutionize P2P transactions, providing secure deposits and payments powered by blockchain and trustless technologies. 🌐✨ Experience transparency and reliability in every cryptocurrency transaction. 💸🔒
🔐 Trustless Technology: Secure and block deposits without intermediaries.
💾 Blockchain-Powered Transparency: Immutable, auditable, and verifiable transactions.
💱 Crypto-Payment Support: Manage cryptocurrency payments safely and efficiently.
✅ Automated Refunds: Streamlined processes ensure refunds and payment releases happen automatically.
🛠️ Trustless Escrow:
Funds are securely held in blockchain-based escrow accounts until all terms are met.
🔎 Blockchain Transparency:
Every transaction is logged on the blockchain for full visibility and accountability. 📜
💰 Crypto Payments:
Supports irreversible and secure cryptocurrency payments while reducing risks of fraud or disputes.
🔗 Trustline Process:
Verified trustlines between parties add an extra layer of transaction security. 🔒
📤 Automated Refund System:
Ensures funds are automatically released based on the terms of the agreement, with no manual intervention required.
- Create Escrow: The renter creates a secure escrow account. 🏗️
- Fund Escrow: The deposit is funded by the renter. 💵
- Rental Agreement: Terms are agreed upon and stored on the blockchain. 📃
- Completion or Cancellation: Funds are released based on contract outcomes. 🎯
- Install Docker and Docker Compose
- Download the Hasura global binary. See steps here
- Run
docker compose up -d
- Connect with database. For this run
hasura console
and follow this guide
Connect using an environment variable and just type PG_DATABASE_URL
Name your database as safetrust
(instead of default) when prompted to do so.
Now, run the migrations.
hasura migrate apply --admin-secret myadminsecretkey
- Adding migrations.
You can add migrations either with the hasura console or by the command:
hasura migrate create [enable_postgis] --admin-secret myadminsecretkey
where enable_postgis
is the name of the migration. Please make sure to use descriptive names with verbs about what the migration is doing!
Then to apply them:
hasura migrate apply --admin-secret myadminsecretkey
If you wanna use the hasura web console and access it on http://localhost:9695/
:
hasura console --admin-secret myadminsecretkey
And you should be good to go to start and work on this.
Error Running Docker Compose
Rosetta error: Rosetta is only intended to run on Apple Silicon with a macOS host using Virtualization.framework with Rosetta mode enabled
- Run
docker compose up -d
. - If the Backend postgres-1 module can't start and shows the error above:
- This is due to an issue with Rosetta settings on Apple Silicon devices.
- ✅ Solution:
- Go to Docker Settings and disable the:
Use Rosetta for x86_64/amd64 emulation on Apple Silicon
selection button. - 🔄 Restart Docker.
- 🚀 It should now run great!
- Go to Docker Settings and disable the:
This project uses Karate framework for API testing. The tests are designed to run in a Docker environment.
- Docker
- Docker Compose
backend/
├── docker-compose-test.yml
├── Dockerfile.test
└── tests/
├── karate.jar
└── karate/
├── features/
│ ├── auth/
│ │ ├── login.feature
│ │ └── permissions.feature
│ └── users/
│ ├── create.feature
│ └── query.feature
└── src/
└── test/
└── resources/
└── karate-config.js
To run all tests:
docker compose -f docker-compose-test.yml up --build --abort-on-container-exit
This command will:
- Build the test container
- Start PostgreSQL and Hasura containers
- Run all Karate tests
- Show test results in the console
- Generate HTML reports in
target/karate-reports/
After running the tests, you can find the HTML reports at:
- Summary:
tests/results/karate-summary.html
- Detailed:
tests/results/karate-tags.html
- Create new
.feature
files intests/karate/features/
- Follow the Karate DSL syntax
- Tests will be automatically picked up when running the test command
- Main config:
tests/karate/src/test/resources/karate-config.js
- Database config:
docker-compose-test.yml
- Test environment:
Dockerfile.test
If tests fail with connection errors:
- Ensure all containers are running:
docker compose -f docker-compose-test.yml ps
- Check container logs:
docker compose -f docker-compose-test.yml logs
- Verify network connectivity:
docker network inspect backend_test-network
Seeds are files that allow you to create test data in an automated way
Creating a seed:
hasura seed create seed_name
At this moment you need to write the SQL code in the seed file
Applying all seeds:
hasura seed apply
Applying an specific seed:
hasura seed apply --file seed_name.sql