Confรญo is an open-source Web3 wallet and transaction platform designed for Latin America.
It enables users to send, receive, and hold stablecoins (like USDC or cUSD) on the Aptos blockchain, with zero gas fees and no crypto complexity.
Built for real people โ not just crypto experts.
In countries like Venezuela, Argentina, and beyond, inflation erodes trust in local currencies.
Confรญo helps people access stable dollars, send remittances, and pay each other โ simply and safely โ using blockchain.
"Confรญo" means "I trust" in Spanish.
We open-source everything because trust must be earned, not assumed.
- ๐ Log in via Google/Apple using Firebase Auth
- ๐ธ Send cUSD to any phone contact
- ๐ฒ Receive money through WhatsApp links
- โก๏ธ Enjoy gasless (sponsored) transactions
- ๐ช Interact directly with Aptos-based smart contracts
- ๐ช P2P Trading: Buy and sell crypto with local payment methods
- ๐ฌ Real-time chat for P2P trades with WebSocket support
- ๐ข Business accounts for commercial operations
- ๐ฆ Bank information management with country-specific requirements
Layer | Stack |
---|---|
Frontend | React Native (no Expo) |
Web App | React + TypeScript |
Auth | Firebase Authentication |
Blockchain | Aptos |
Smart Contracts | Move language |
Backend API | Django + GraphQL |
Real-time | Django Channels + WebSocket |
Cache/Sessions | Redis |
Database | PostgreSQL |
ASGI Server | Daphne |
CI/CD | Cloudflare Pages |
Link Shortener | Cloudflare Workers + KV |
- โ Not a custodial wallet โ we never store user funds or signing keys
- โ No backend "tricks" โ money logic lives entirely on-chain
- โ No crypto knowledge required โ users sign in with Google or Apple
- โ No server-side keyless proofs โ all signing happens on the client
Confรญo is more than a wallet โ it's a mission to bring financial confidence to Latin America through transparency, crypto, and culture.
Come build the future with us:
๐ Website: confio.lat
๐ Telegram (Community): t.me/FansDeJulian
๐ฑ TikTok (Latinoamรฉrica): @JulianMoonLuna
MIT License โ build freely, fork proudly, remix for your country.
Confรญo is led by Julian Moon, a Korean builder based in Latin America, inspired by the dream of a trustworthy, borderless financial inclusion for everyone.
This is a monolithic repository containing the full Confรญo stack:
/Confio/
โโโ web/ # React-based web application
โ โโโ public/ # Static public files
โ โ โโโ index.html # Base HTML template
โ โ โโโ manifest.json # Web app manifest
โ โ โโโ images/ # Public images
โ โโโ .well-known/ # App verification files
โ โ โโโ apple-app-site-association # iOS app verification
โ โ โโโ assetlinks.json # Android app verification
โ โโโ src/ # React source code
โ โ โโโ components/ # React components
โ โ โโโ pages/ # Page components
โ โ โ โโโ TermsPage.js # Terms of Service page
โ โ โ โโโ PrivacyPage.js # Privacy Policy page
โ โ โ โโโ DeletionPage.js # Data Deletion page
โ โ โโโ styles/ # CSS and SCSS files
โ โ โโโ types/ # TypeScript type definitions
โ โ โโโ App.css # Main application styles
โ โ โโโ App.js # Main application component
โ โ โโโ index.js # Application entry point
โ โโโ build/ # Production build output
โ โ โโโ static/ # Compiled static assets
โ โ โ โโโ css/ # Compiled CSS files
โ โ โ โโโ js/ # Compiled JavaScript files
โ โ โ โโโ media/ # Compiled media files
โ โ โโโ index.html # Production HTML template
โ โโโ scripts/ # Build and utility scripts
โ โ โโโ copy-index.js # Script to sync React build with Django
โ โโโ .eslintrc.json # ESLint configuration
โ โโโ .prettierrc # Prettier configuration
โ โโโ nginx.conf # Nginx configuration
โ โโโ package.json # Node.js dependencies
โ โโโ tsconfig.json # TypeScript configuration
โ โโโ yarn.lock # Yarn lock file
โโโ config/ # Django project configuration
โ โโโ settings.py # Django settings
โ โโโ urls.py # URL routing
โ โโโ wsgi.py # WSGI configuration
โ โโโ asgi.py # ASGI configuration for Django Channels
โ โโโ schema.py # Root GraphQL schema
โ โโโ celery.py # Celery configuration
โ โโโ views.py # View functions
โโโ auth/ # Authentication module
โ โโโ models.py # Auth-related models
โ โโโ schema.py # Auth GraphQL schema
โ โโโ jwt.py # JWT token handling
โ โโโ middleware.py # Auth middleware
โโโ telegram_verification/ # Phone verification system
โ โโโ models.py # Verification models
โ โโโ schema.py # Verification GraphQL schema
โ โโโ views.py # Verification endpoints
โ โโโ country_codes.py # Country codes mapping
โโโ p2p_exchange/ # P2P trading platform
โ โโโ models.py # P2P trading models (Offers, Trades, Messages, UserStats, Escrow)
โ โโโ schema.py # P2P GraphQL schema and mutations
โ โโโ admin.py # Enhanced admin interface with visual indicators
โ โโโ consumers.py # WebSocket consumers for real-time chat
โ โโโ routing.py # WebSocket URL routing
โ โโโ default_payment_methods.py # Country-specific payment methods
โ โโโ migrations/ # Database migrations for P2P models
โโโ blockchain/ # Aptos blockchain integration
โ โโโ models.py # Blockchain event and balance models
โ โโโ aptos_balance_service.py # Hybrid balance caching system
โ โโโ aptos_sponsor_service.py # Gas sponsorship service
โ โโโ aptos_transaction_manager.py # Transaction management with Aptos SDK
โ โโโ aptos_keyless_service.py # Keyless authentication service
โ โโโ tasks.py # Celery tasks for blockchain polling
โ โโโ management/ # Management commands (poll_blockchain, test_aptos_connection)
โ โโโ migrations/ # Database migrations
โ โโโ README.md # Blockchain integration documentation
โโโ payments/ # Payment processing system
โ โโโ models.py # Payment transaction models
โ โโโ schema.py # Payment GraphQL schema
โ โโโ management/ # Payment management commands
โโโ send/ # Send transaction system (two-phase flow)
โ โโโ models.py # Send transaction models
โ โโโ schema.py # Send GraphQL schema with prepare/execute mutations
โ โโโ validators.py # Transaction validation
โโโ security/ # Security and fraud prevention system
โ โโโ models.py # Security models (IPAddress, UserSession, DeviceFingerprint, etc.)
โ โโโ middleware.py # Security middleware for tracking IPs and sessions
โ โโโ utils.py # Security utilities (device fingerprinting, risk assessment)
โ โโโ admin.py # Enhanced admin interface for security monitoring
โ โโโ migrations/ # Database migrations for security models
โโโ prover/ # Keyless authentication initialization and coordination
โ โโโ models.py # Empty - keyless proofs remain client-side
โ โโโ schema.py # GraphQL schema for keyless initialization
โ โโโ admin.py # Empty - no server-side proof storage
โ โโโ migrations/ # Database migrations
โโโ prover-service/ # Standalone service for proof generation and verification
โ โโโ index.js # Main entry point for the prover service
โ โโโ prover.js # Core proof generation and verification logic
โ โโโ utils.js # Utility functions for proof operations
โ โโโ tests/ # Test cases for the prover service
โ โโโ package.json # Node.js dependencies and scripts
โ โโโ Dependencies:
โ โ โโโ @aptos-labs/ts-sdk: Aptos SDK functionality
โ โ โโโ express: Web server
โ โ โโโ cors: Cross-Origin Resource Sharing
โ โ โโโ dotenv: Environment variable management
โ โโโ Scripts:
โ โโโ start: Run the service
โ โโโ test: Run tests
โ โโโ lint: Run the linter
โโโ users/ # User authentication and management
โ โโโ models.py # User models
โ โโโ schema.py # GraphQL schema and resolvers
โ โโโ serializers.py # User data serialization
โ โโโ country_codes.py # Country codes mapping [name, code, iso]
โ โโโ jwt.py # JWT token management
โ โโโ middleware.py # User authentication middleware
โ โโโ tests/ # User tests
โโโ apps/ # React Native mobile application
โ โโโ android/ # Android-specific native code and configurations
โ โ โโโ app/ # Android app module
โ โ โโโ google-services.json # Firebase configuration for Android (โ ๏ธ Add to .gitignore)
โ โ โโโ ... # Other Android configurations
โ โโโ ios/ # iOS-specific native code and configurations
โ โ โโโ Confio/ # iOS app module
โ โ โโโ GoogleService-Info.plist # Firebase configuration for iOS (โ ๏ธ Add to .gitignore)
โ โ โโโ ... # Other iOS configurations
โ โโโ src/ # React Native source code
โ โ โโโ apollo/ # GraphQL client configuration and queries
โ โ โโโ assets/ # Static assets (images, fonts, etc.)
โ โ โ โโโ svg/ # SVG assets (logos, icons)
โ โ โโโ components/ # Reusable React components
โ โ โโโ screens/ # Main app screens (HomeScreen, ContactsScreen, etc.)
โ โ โโโ config/ # Application configuration
โ โ โโโ contexts/ # React contexts (Auth, etc.)
โ โ โโโ hooks/ # Custom React hooks
โ โ โ โโโ useAccountManager.ts # Multi-account management hook
โ โ โโโ screens/ # Screen components
โ โ โ โโโ AuthScreen.tsx # Authentication screen
โ โ โ โโโ PhoneVerificationScreen.tsx # Phone verification
โ โ โ โโโ HomeScreen.tsx # Main app screen
โ โ โ โโโ CreateBusinessScreen.tsx # Business account creation
โ โ โโโ services/ # API and business logic services
โ โ โ โโโ authService.ts # Authentication service with keyless signing
โ โ โ โโโ enhancedAuthService.ts # Enhanced auth with device fingerprinting
โ โ โ โโโ ... # Other services
โ โ โโโ types/ # TypeScript type definitions
โ โ โโโ utils/ # Utility functions
โ โ โ โโโ accountManager.ts # Multi-account storage and management
โ โ โ โโโ countries.ts # Country codes mapping [name, code, iso, flag]
โ โ โ โโโ aptosKeyless.ts # Keyless authentication utilities with multi-account pepper generation
โ โ โ โโโ ... # Other utility functions
โ โ โโโ ... # Other source files
โ โโโ scripts/ # Build and development scripts
โ โโโ .env # Environment variables (โ ๏ธ Add to .gitignore)
โ โโโ babel.config.js # Babel configuration
โ โโโ firebase.json # Firebase configuration
โ โโโ metro.config.js # Metro bundler configuration
โ โโโ package.json # Node.js dependencies
โโโ contracts/ # Aptos Move smart contracts
โ โโโ README.md # Contracts overview and deployment guide
โ โโโ PERMISSIONS.md # Comprehensive permissions and multi-sig guide
โ โโโ cusd/ # CUSD stablecoin implementation
โ โ โโโ sources/ # Move source files
โ โ โ โโโ cusd.move # CUSD stablecoin implementation
โ โ โ โโโ cusd_vault_usdc.move # USDC vault for CUSD minting/burning
โ โ โ โโโ cusd_vault_treasury.move # Treasury vault for CUSD operations
โ โ โโโ Move.toml # Package configuration
โ โ โโโ Move.lock # Dependency lock file
โ โโโ confio/ # CONFIO governance token
โ โ โโโ sources/ # Move source files
โ โ โ โโโ confio.move # CONFIO governance token implementation
โ โ โโโ Move.toml # Package configuration
โ โ โโโ Move.lock # Dependency lock file
โ โโโ pay/ # Payment processing with fee collection
โ โ โโโ sources/ # Move source files
โ โ โ โโโ pay.move # Payment system with 0.9% fee
โ โ โโโ Move.toml # Package configuration
โ โ โโโ Move.lock # Dependency lock file
โ โโโ invite_send/ # Send funds to non-users with invitations
โ โ โโโ sources/ # Move source files
โ โ โ โโโ invite_send.move # Invitation system with 7-day reclaim
โ โ โโโ Move.toml # Package configuration
โ โ โโโ Move.lock # Dependency lock file
โ โโโ p2p_trade/ # P2P trading with escrow and dispute resolution
โ โโโ sources/ # Move source files
โ โ โโโ p2p_trade.move # Escrow-based P2P trading system
โ โโโ tests/ # Test files
โ โ โโโ escrow_security_test.move # Security test cases
โ โโโ README.md # Contract documentation
โ โโโ Move.toml # Package configuration
โ โโโ Move.lock # Dependency lock file
โโโ workers/ # Cloudflare Workers services
โ โโโ link-shortener/ # Link shortener for WhatsApp share links
โ โโโ src/
โ โ โโโ index.ts # Worker code for platform detection and redirects
โ โโโ public/
โ โ โโโ admin.html # Admin UI for link management
โ โโโ wrangler.toml # Cloudflare Workers configuration
โ โโโ tsconfig.json # TypeScript configuration
โ โโโ package.json # Node.js dependencies
โ โโโ README.md # Link shortener documentation
โ โโโ DEPLOY.md # Deployment instructions
โโโ manage.py # Django management script
โโโ requirements.txt # Python dependencies
โโโ celery.py # Celery worker configuration
-
Social Sign-In
- Sign in with Google or Apple
- Firebase Authentication handles OAuth flow
- Secure token exchange with backend
-
Phone Verification
- Required for enhanced security
- Telegram-based verification system
- Country code support for LATAM
-
Keyless Authentication Integration (Client-Side)
- Zero-knowledge proof authentication using Aptos keyless
- All proofs and ephemeral keys remain client-side
- Server only stores the resulting Aptos address
- Two-phase transaction flow:
- Server prepares transaction โ returns unsigned bytes
- Client signs with keyless โ sends signature back
- Server executes with dual signatures (user + sponsor)
Confรญo supports multiple accounts per user, allowing separate wallets for personal and business use cases with advanced JWT-based context management and role-based access control.
- Personal Accounts: Individual wallets for personal transactions
- Business Accounts: Dedicated wallets for business operations with employee management
- Personal:
personal_{index}
(e.g.,personal_0
,personal_1
) - Business (All):
business_{businessId}_{index}
(e.g.,business_123_0
,business_456_1
)- Both owners and employees use the same format
- Differentiation between owner/employee is done via BusinessEmployee relation model on server
- businessId is the actual Business model ID from the database
The multi-account system uses deterministic pepper generation:
pepper = SHA256(issuer | subject | audience | account_type | business_id (if applied) | account_index)
Where:
issuer
: JWT issuer (e.g., "https://accounts.google.com")subject
: JWT subject (user's unique ID)audience
: OAuth client IDaccount_type
: Either "personal" or "business"business_id
: Business ID (only included for business accounts)account_index
: Numeric index (0, 1, 2, etc.)
The system includes comprehensive JWT context management for secure account operations:
JWT Payload Structure
{
"user_id": "123",
"username": "user@example.com",
"account_type": "business",
"account_index": 0,
"business_id": "456", // Present for ALL business accounts (owner and employee)
"auth_token_version": 1,
"exp": 1234567890,
"type": "access"
}
Account Context in API Requests
- All GraphQL queries/mutations automatically receive account context from JWT
- Business operations validate access through BusinessEmployee relationships
- No client-controlled parameters for sensitive operations
- Account context determines which wallet address and data to access
Business accounts support multiple employees with role-based permissions:
Roles
- Owner: Full access to all business operations (bypasses permission checks)
- Admin: All operations except deleting the business
- Manager: Full operational permissions without employee management
- Cashier: Limited to accepting payments and creating invoices
Permission System (Negative-Check)
# Permissions are explicitly defined - if not listed, access is denied
ROLE_PERMISSIONS = {
'owner': {
# All permissions granted (special case - bypasses checks)
'accept_payments', 'view_transactions', 'view_balance', 'send_funds',
'manage_employees', 'view_business_address', 'view_analytics',
'delete_business', 'edit_business_info', 'manage_bank_accounts',
'manage_p2p', 'create_invoices', 'manage_invoices', 'export_data'
},
'admin': {
'accept_payments': True, 'view_transactions': True, 'view_balance': True,
'send_funds': True, 'manage_employees': True, 'view_business_address': True,
'view_analytics': True, 'edit_business_info': True, 'manage_bank_accounts': True,
'manage_p2p': True, 'create_invoices': True, 'manage_invoices': True,
'export_data': True
# Note: delete_business is False (not granted)
},
'manager': {
'accept_payments': True, 'view_transactions': True, 'view_balance': True,
'send_funds': True, 'view_business_address': True, 'view_analytics': True,
'manage_bank_accounts': True, 'manage_p2p': True, 'create_invoices': True,
'manage_invoices': True, 'export_data': True
# Note: manage_employees and edit_business_info are False
},
'cashier': {
'accept_payments': True, 'view_transactions': True, 'create_invoices': True
# Note: All other permissions are False, including:
# - view_balance (cannot see business balance)
# - view_business_address (cannot see business address)
# - send_funds (cannot make payments)
# - manage_p2p (cannot access P2P trading)
}
}
Security Pattern
- All business operations verify access through
user_id โ BusinessEmployee.filter(business_id=x)
- Never directly access through business_id to prevent security vulnerabilities
- JWT context validation happens centrally in
get_jwt_business_context_with_validation()
- Both UI and API enforce permissions - UI hides features, API blocks operations
- Owners identified by role='owner' in BusinessEmployee, not by account ownership
UI Permission Enforcement The frontend automatically adapts based on employee permissions:
// Balance visibility
{activeAccount?.isEmployee && !activeAccount?.employeePermissions?.viewBalance
? 'โขโขโขโขโขโข' // Hidden for employees without permission
: '$1,234.56'
}
// Action buttons
{activeAccount?.isEmployee && quickActions.length <= 1 ? (
// Show welcome message instead of limited actions
<EmployeeWelcomeMessage />
) : (
// Show available action buttons
<ActionButtons />
)}
// Tab visibility
- Scan tab: Hidden for employees without sendFunds
- Exchange tab: Shows lock message without manageP2p
- Charge>Pagar: Shows lock message without sendFunds
// Address visibility
- Business address hidden for cashiers (no viewBusinessAddress permission)
- Personal addresses always visible to account owner
- New users: Automatically get
personal_0
as their default account - Existing users: Continue using their current pepper (equivalent to
personal_0
) - Account switching: Each account type/index combination generates a unique Aptos address
- Employee accounts: Access business through JWT with embedded business_id
- Business owners: Also receive business_id in JWT for consistent security model
- Deterministic: Same OAuth identity + account context = same Aptos address
- Isolated: Each account has its own private key and Aptos address
- Non-custodial: Private keys are never stored on servers
- Stateless: Server doesn't track active accounts, client manages state
- Role-based: Negative-check permission system ensures only explicitly allowed actions
- Relationship-based: All business access verified through BusinessEmployee table
- JWT-first: All account context comes from JWT, never from client parameters
The app uses atomic account switching to prevent partial state updates where different parts of the app could be in different account contexts.
- Profile and balance showing Business account, but acting like Personal account
- Offers created by Business account requiring Personal account permissions
- JWT token, Aptos address, and keyless private values getting out of sync
The useAtomicAccountSwitch
hook ensures all account-related state is synchronized:
- Validates the target account exists
- Pauses all Apollo queries to prevent race conditions
- Clears Apollo cache to prevent stale data
- Updates account context in Keychain
- Obtains new JWT token with updated context
- Refreshes profile data
- Refreshes accounts list
- Resumes Apollo queries
- Validates everything is in sync
import { useAtomicAccountSwitch } from '../hooks/useAtomicAccountSwitch';
import { AccountSwitchOverlay } from '../components/AccountSwitchOverlay';
function MyComponent() {
const {
switchAccount,
state,
isAccountSwitchInProgress
} = useAtomicAccountSwitch();
const handleAccountSwitch = async (accountId: string) => {
const success = await switchAccount(accountId);
if (success) {
// Account switched successfully
}
};
return (
<>
{/* Your UI */}
{/* Always include the overlay to block UI during switch */}
<AccountSwitchOverlay
visible={state.isLoading}
progress={state.progress}
/>
</>
);
}
- Keychain account context
- JWT authentication token
- Apollo cache (cleared and refetched)
- Profile data (personal or business)
- Active queries
- UI state
- Always use
useAtomicAccountSwitch
instead of the rawswitchAccount
fromuseAccount
- Always include
AccountSwitchOverlay
in your component to block UI during switch - Never bypass the atomic switch - it ensures data consistency
- Account context comes from JWT - never pass accountId to mutations
- Permission validation: Every mutation validates required permissions
Account Manager (apps/src/utils/accountManager.ts
)
- Manages account storage and retrieval using React Native Keychain
- Handles account creation, switching, and context management
- Stores account metadata including business relationships
Auth Service Integration (apps/src/services/authService.ts
)
- Automatically uses active account context for pepper generation
- Provides account switching and creation methods
- Manages JWT tokens with embedded account context
JWT Context (users/jwt_context.py
)
get_jwt_business_context_with_validation()
: Extracts account context from JWT and validates BusinessEmployee access- Pass
required_permission=None
for read-only operations - Pass specific permission (e.g., 'send_funds', 'manage_employees') for mutations
- Pass
check_role_permission()
: Implements negative-check permission system
React Hook (apps/src/hooks/useAccountManager.ts
)
- Provides easy access to account management in React components
- Handles account state and operations
Confรญo uses a custom Cloudflare Workers-based link shortener for WhatsApp share links during closed-beta (TestFlight). This replaces expensive third-party services with a cost-effective solution.
- Short Links: Generate links like
confio.lat/abc123
- Platform Detection: Automatically detects iOS/Android/Desktop
- Smart Redirects:
- iOS โ TestFlight with referral data
- Android โ Play Store with referrer parameter
- Desktop โ Landing page with campaign data
- Deferred Deep Linking: Post-install attribution with 48-hour window
- Analytics: Track clicks, platforms, and countries
- Cost-Effective: Free tier covers most usage (vs $1,200/month Branch.io)
- Platform Detection: User-agent based platform detection
- API Endpoints: Create links, get statistics
- KV Storage: Stores link data and analytics
- Admin UI: Web interface for link management
- Deep Link Handler: Processes incoming links
- Deferred Links: Stores links for post-login processing
- Secure Storage: Uses react-native-keychain for deferred links
- Navigation: Routes users to appropriate screens
See /workers/link-shortener/DEPLOY.md
for detailed deployment instructions. Key steps:
- Create Cloudflare KV namespaces
- Configure environment variables
- Deploy with
wrangler deploy
- Set up custom domain routing
- Configure iOS Universal Links
- Syncs with server-provided account data
Creating a Business Account
const businessAccount = await authService.createAccount(
'business',
'El Sabor de Chicha',
'E',
undefined,
'Restaurante'
);
await authService.switchAccount(businessAccount.id);
Switching Between Accounts
await authService.switchAccount('personal_0'); // Personal account
await authService.switchAccount('business_123_0'); // Business account (ID 123)
Employee Access
// Employee switches to employer's business account
await authService.switchAccount('business_456_0'); // Business ID 456
// JWT automatically includes business_id for permission validation
// Server differentiates owner vs employee via BusinessEmployee relation
GraphQL Query with Permission Check
# Backend automatically validates access
jwt_context = get_jwt_business_context_with_validation(info, required_permission='view_balance')
if not jwt_context:
return "0" # Access denied
Cashier Creating Invoice โ
# Cashier has 'accept_payments' permission
jwt_context = get_jwt_business_context_with_validation(info, required_permission='accept_payments')
# Access granted - can create invoice
Cashier Managing Employees โ
# Cashier lacks 'manage_employees' permission
jwt_context = get_jwt_business_context_with_validation(info, required_permission='manage_employees')
# Returns None - access denied
Owner Any Operation โ
# Owners bypass all permission checks
if employee_record.role == 'owner':
# Full access granted
-
Access Token
- Short-lived (1 hour) for security
- Contains account context (type, index, business_id)
- Automatically refreshed using refresh token
- Stored securely in device Keychain
-
Refresh Token
- Long-lived (1 year) for persistent sessions
- Used to obtain new access tokens
- Stored securely in device Keychain
-
Token Refresh Mechanism
- Proactive refresh: Checks token expiration before requests
- Reactive refresh: Handles expired token errors
- Request queue management during refresh
- Automatic retry of failed requests after refresh
- Secure token storage and cleanup
- Account context preserved across token refreshes
- ๐ Secure credential storage using Keychain
- ๐ Automatic token refresh and rotation
- ๐งน Complete data cleanup on sign out
- ๐ JWT-based API authentication
- ๐ก๏ธ Protection against replay attacks
Confรญo uses a soft delete system for all critical models, including:
- User
- Business
- Account
- Transaction
- IdentityVerification
- KeylessProof
- TelegramVerification
Instead of permanently deleting records, a deleted_at
timestamp is set. This ensures:
- No index reuse: Deleted accounts/businesses/users cannot be recreated with the same index, preventing Aptos address collisions and key reuse.
- Prevents collision of eliminated and newly created accounts: If an account is deleted, its index is never reused, so a new account cannot be created with the same index and thus cannot generate the same Aptos address. This eliminates the risk of a new user accidentally or maliciously taking over the Aptos address of a previously deleted account.
- Auditability: All actions are traceable for compliance and security audits.
- Data integrity: Financial and identity records are never truly lost, only flagged as deleted.
Confรญo implements comprehensive device fingerprinting for fraud prevention and risk assessment:
- Device Hardware: Model, brand, manufacturer, memory
- Network: IP address, ISP, country, timezone
- Software: OS version, app version, Firebase installation ID
- Behavioral: Session patterns, login frequency, feature usage
- Registration Risk: New device + new user = higher scrutiny
- Login Risk: New device + existing user = require additional verification
- Transaction Risk: High-value transactions from new devices = enhanced monitoring
- Geolocation Risk: Login from new country = additional verification
- Hash-based Storage: Personal identifiers are hashed before storage
- Aggregated Analytics: Individual fingerprints are not used for tracking
- Legal Compliance: Full GDPR/CCPA compliance with data retention policies
- User Control: Users can view and delete their device data
- Account Takeover Prevention: Detect unauthorized access attempts
- Fraud Detection: Identify suspicious patterns across devices
- Risk-based Authentication: Adjust security requirements based on risk score
- Compliance: Meet regulatory requirements for transaction monitoring
Confรญo uses a hybrid deployment approach optimized for Latin American users:
- Primary Region: US East (N. Virginia) for low latency to LATAM
- Database: PostgreSQL with read replicas
- Cache: Redis cluster for session management
- CDN: CloudFlare for static assets and DDoS protection
- Load Balancer: AWS Application Load Balancer with SSL termination
- iOS: TestFlight for closed beta, App Store for production
- Android: Internal testing tracks, Google Play Store for production
- Deep Linking: Universal Links (iOS) and App Links (Android)
- Analytics: Firebase Analytics with custom events
- Hosting: Cloudflare Pages for static hosting
- API: Django backend with GraphQL endpoint
- WebSocket: Django Channels for real-time features
- SSL: Full SSL encryption with HSTS headers
- Network: Aptos Testnet for development, Mainnet for production
- RPC: Multiple RPC endpoints for redundancy
- Sponsored Transactions: Dedicated sponsor account for gas payments
- Transaction Monitoring: Real-time blockchain event polling
- WAF: Cloudflare Web Application Firewall
- DDoS Protection: Cloudflare with custom rules for LATAM traffic
- Monitoring: DataDog for application and infrastructure monitoring
- Logging: Structured logging with log aggregation
- Alerts: PagerDuty integration for critical issues
- Database Backups: Daily automated backups with point-in-time recovery
- Code Backups: Git repositories with multiple remotes
- Configuration: Infrastructure as Code with Terraform
- Failover: Multi-region deployment capability for critical services
- Python 3.9+
- Node.js 18+
- PostgreSQL 13+
- Redis 6+
- Docker (optional, for containerized services)
- Clone the repository
git clone https://github.com/confio/confio.git
cd confio
- Create virtual environment
python -m venv myvenv
source myvenv/bin/activate # On Windows: myvenv\Scripts\activate
- Install Python dependencies
pip install -r requirements.txt
- Environment configuration
cp .env.example .env
# Edit .env with your configuration
- Database setup
python manage.py migrate
python manage.py createsuperuser
- Start services
# Django development server
python manage.py runserver
# Celery worker (separate terminal)
celery -A config worker -l info
# Celery beat (separate terminal)
celery -A config beat -l info
cd web
npm install
npm start # Development server
npm run build # Production build
cd apps
npm install
# iOS (macOS only)
cd ios && pod install && cd ..
npx react-native run-ios
# Android
npx react-native run-android
- Install Aptos CLI
curl -fsSL "https://aptos.dev/scripts/install_cli.py" | python3
- Deploy contracts (development)
cd contracts/cusd
aptos move publish --profile testnet
cd ../confio
aptos move publish --profile testnet
- Configure environment
# Add contract addresses to .env
APTOS_CUSD_ADDRESS=0x...
APTOS_CONFIO_ADDRESS=0x...
python manage.py test
# Web
cd web && npm test
# React Native
cd apps && npm test
cd contracts/cusd && aptos move test
cd contracts/confio && aptos move test
- Response Time: <200ms API response time (95th percentile)
- Throughput: 1,000+ requests/second capacity
- Uptime: 99.9% availability target
- Transaction Speed: <5 seconds for sponsored transactions
- Database: Query optimization, connection pooling, read replicas
- Caching: Redis for session data, query results, and computed values
- CDN: Static asset caching with geographic distribution
- Async Processing: Celery for background tasks and blockchain polling
- Application Monitoring: Request/response times, error rates
- Infrastructure Monitoring: CPU, memory, disk usage
- Business Metrics: Transaction volume, user activity, conversion rates
- Custom Alerts: Failed transactions, high error rates, performance degradation
- Encryption at Rest: Database encryption for sensitive data
- Encryption in Transit: TLS 1.3 for all communications
- Key Management: AWS KMS for encryption key management
- PII Handling: Hash-based storage for personal identifiers
- Authentication: Multi-factor authentication for admin accounts
- Authorization: Role-based access control (RBAC)
- API Security: Rate limiting, input validation, SQL injection prevention
- Network Security: VPC isolation, security groups, NACLs
- GDPR: Data minimization, right to be forgotten, consent management
- CCPA: Data transparency, opt-out mechanisms
- Financial Regulations: AML/KYC compliance where required
- Security Audits: Regular penetration testing and code reviews
- Primary: Spanish (Latin America)
- Secondary: English (US)
- Planned: Portuguese (Brazil), Italian (Argentina)
- Currency Display: Local currency formatting
- Payment Methods: Country-specific payment options
- Legal Compliance: Regional financial regulations
- Cultural Adaptation: Messaging and UX adapted for LATAM culture
- i18n Framework: React i18next for frontend
- Backend Localization: Django internationalization
- Database Design: Multi-language support for user-generated content
- Asset Management: Localized images and media
- Complete Aptos mainnet migration
- Launch business accounts with employee management
- Implement advanced P2P trading features
- Add Brazilian market support
- Multi-language support (Portuguese, Italian)
- Advanced analytics and reporting
- Integration with traditional banking
- Mobile SDK for third-party integrations
- Cross-chain interoperability
- Merchant payment gateway
- Advanced DeFi integrations
- Enterprise-grade compliance tools
- Expansion to additional LATAM countries
- Institutional investor features
- Advanced risk management
- White-label solution for banks
Confรญo is open source and welcomes contributions from the community.
- Fork the repository and create a feature branch
- Make your changes with appropriate tests
- Submit a pull request with a clear description
- Code review process with maintainers
- Merge after approval and testing
- Frontend Development: React Native, React, TypeScript
- Backend Development: Python, Django, GraphQL
- Smart Contracts: Move language, Aptos blockchain
- DevOps: AWS, Docker, CI/CD pipelines
- Design: UI/UX, mobile app design
- Documentation: Technical writing, tutorials
- Testing: Automated testing, quality assurance
- Localization: Translation, cultural adaptation
- Code Style: Follow project style guides and linting rules
- Testing: Write tests for new features and bug fixes
- Documentation: Update documentation for significant changes
- Security: Follow secure coding practices
- Performance: Consider performance impact of changes
- Discord: Join our developer community
- GitHub Discussions: Ask questions and share ideas
- Issues: Report bugs and request features
- Wiki: Contribute to project documentation
- App Support: In-app help center and contact form
- Telegram: @FansDeJulian for community support
- Website: confio.lat for official information
- Social Media: Follow @JulianMoonLuna on TikTok for updates
- GitHub Issues: Report bugs and request features
- Documentation: Comprehensive guides in the repository
- Community: Join our developer Discord server
- Office Hours: Monthly community calls with the core team
- Partnerships: Email partnerships@confio.lat
- Enterprise: Email enterprise@confio.lat
- Press: Email press@confio.lat
- General: Email hello@confio.lat
Our privacy policy is available at confio.lat/privacy and covers:
- Data collection and usage
- Third-party integrations
- User rights and controls
- Regional compliance requirements
Our terms of service are available at confio.lat/terms and cover:
- User responsibilities
- Service availability
- Limitation of liability
- Dispute resolution
- Code: MIT License - see LICENSE file
- Trademarks: Confรญo trademarks are owned by Confรญo Inc.
- Content: Documentation under Creative Commons Attribution
- Dependencies: Various open source licenses - see package files
Built with โค๏ธ for Latin America by Julian Moon and the Confรญo community.