{
  "id": "1949992764580189868",
  "hourlyBudgetMin": {
    "rawValue": "3.0",
    "currency": "USD",
    "displayValue": "3.0"
  },
  "hourlyBudgetMax": {
    "rawValue": "10.0",
    "currency": "USD",
    "displayValue": "10.0"
  },
  "ciphertext": "~021949992764580189868",
  "title": "Crypto exchange platform",
  "description": "✅ Core Architecture & Backend Setup\n\t1.\tDesign system architecture using microservices in Go (auth, wallet, engine, user, etc.)\n\t2.\tSet up PostgreSQL database (schemas for users, orders, balances, KYC)\n\t3.\tConfigure Redis for rate limiting, caching, and queues\n\t4.\tImplement JWT-based authentication and refresh tokens\n\t5.\tBuild role-based access control (RBAC) for admin/user/support roles\n\t6.\tDevelop secure OAuth2 flows using Go (password grant, token issuance)\n\t7.\tBuild user registration/login, password reset, session handling\n\t8.\tAdd Google Authenticator (TOTP) for 2FA login security\n\t9.\tImplement audit logging for logins, actions, KYC changes, withdrawals\n\n⸻\n\n💸 Wallets & Crypto Functionality\n\t10.\tIntegrate native wallet support for ETH, BTC, BSC, Polygon (or use APIs like BlockCypher, Tatum)\n\t11.\tCreate hot wallet management service (sending, receiving, monitoring)\n\t12.\tCreate cold wallet withdrawal process with admin override (optional)\n\t13.\tBuild automated deposit address generation per user\n\t14.\tImplement transaction monitoring to detect incoming deposits\n\t15.\tQueue and process outgoing withdrawals with security checks\n\t16.\tCalculate and apply deposit/withdrawal fees\n\t17.\tStore wallet secrets securely using HashiCorp Vault or envvars\n\n⸻\n\n📈 Trading & Exchange Logic\n\t18.\tBuild a lightweight trading engine (limit & market orders, FIFO match)\n\t19.\tCreate APIs for placing/canceling orders\n\t20.\tTrack user balances and reserved funds per open order\n\t21.\tMaintain live order books (optional: in-memory or persisted)\n\t22.\tStore executed trades and user trading history\n\t23.\tExpose market data via REST (order book, ticker, volume)\n\t24.\tOptional: Set up real-time WebSocket feed for market events\n\n⸻\n\n🛂 KYC & Compliance\n\t25.\tIntegrate KYC provider (Sumsub or similar) via REST API\n\t26.\tHandle applicant creation, document upload, and status polling\n\t27.\tEnforce withdrawal limits based on KYC tier (configurable)\n\t28.\tLog KYC status and verification metadata per user\n\t29.\tBlock risky or flagged accounts based on KYC response\n\t30.\tOptional: add IP geofencing, device fingerprinting hooks\n\n⸻\n\n🔐 Security Hardening\n\t31.\tApply TLS (HTTPS) to all services via NGINX or Caddy\n\t32.\tAdd HTTP security headers: CSP, HSTS, X-Frame-Options\n\t33.\tEnable CSRF protection (for frontend forms)\n\t34.\tPrevent XSS in API responses\n\t35.\tSet API rate limits per endpoint/IP/user (via Redis or middleware)\n\t36.\tSecure JWT tokens (expiry, revocation, blacklist if needed)\n\t37.\tStore all secrets in a secure store (Vault or Kubernetes secrets)\n\n⸻\n\n🧪 DevOps & Launch Readiness\n\t38.\tDockerize all backend services with Docker Compose\n\t39.\tWrite deployment scripts (bash or Terraform)\n\t40.\tConfigure PostgreSQL backups and recovery policy\n\t41.\tSet up logging (e.g., Logrus or Zap) and rotating logs\n\t42.\tWrite simple CI/CD pipeline (GitHub Actions or GitLab CI)\n\t43.\tProvide basic API documentation (Swagger or Postman collection)\n\t44.\tWrite admin CLI or API for user/block/withdraw/approve\n\t45.\tPrepare for penetration testing using OWASP checklist\n\t46.\tOptional: set up Prometheus/Grafana or UptimeRobot for health checks",
  "createdDateTime": "2025-07-29T00:37:59+0000",
  "duration": "ONGOING",
  "durationLabel": "More than 6 months",
  "engagement": "30+ hrs/week",
  "amount": {
    "rawValue": "0.0",
    "currency": "USD",
    "displayValue": "0.0"
  },
  "recordNumber": "1020969297",
  "experienceLevel": "INTERMEDIATE",
  "category": "web_mobile_software_dev",
  "subcategory": "web_development",
  "freelancersToHire": 1,
  "relevance": {
    "id": "0",
    "effectiveCandidates": 0,
    "recommendedEffectiveCandidates": 0,
    "uniqueImpressions": 0,
    "publishTime": null,
    "hoursInactive": 0
  },
  "enterprise": false,
  "relevanceEncoded": "{\"position\":\"4481\"}",
  "totalApplicants": 11,
  "preferredFreelancerLocation": null,
  "preferredFreelancerLocationMandatory": false,
  "premium": false,
  "clientNotSureFields": null,
  "clientPrivateFields": null,
  "applied": false,
  "publishedDateTime": "2025-07-29T00:37:59+0000",
  "renewedDateTime": null,
  "occupations": {
    "category": {
      "id": "531770282580668418",
      "prefLabel": "Web, Mobile & Software Dev"
    },
    "subCategories": null,
    "occupationService": null
  },
  "job": {
    "id": "1949992764580189868",
    "workFlowState": {
      "closeResult": null,
      "status": "ACTIVE"
    },
    "activityStat": {
      "applicationsBidStats": {
        "avgRateBid": {
          "rawValue": "11.666666666666666",
          "currency": "USD",
          "displayValue": "11.666666666666666"
        },
        "minRateBid": {
          "rawValue": "5.0",
          "currency": "USD",
          "displayValue": "5.0"
        },
        "maxRateBid": {
          "rawValue": "25.0",
          "currency": "USD",
          "displayValue": "25.0"
        },
        "avgInterviewedRateBid": {
          "rawValue": "9.285714285714286",
          "currency": "USD",
          "displayValue": "9.285714285714286"
        }
      },
      "jobActivity": {
        "lastClientActivity": "2025-07-29T15:24:22.943Z",
        "totalRecommended": 2,
        "invitesSent": 9,
        "totalInvitedToInterview": 7,
        "totalHired": 0,
        "totalUnansweredInvites": 3,
        "totalOffered": 0
      }
    },
    "classification": {
      "category": {
        "id": "531770282580668418",
        "ontologyId": "upworkOccupation:webmobileandsoftwaredev",
        "type": [
          "OCCUPATION"
        ],
        "entityStatus": "ACTIVE",
        "preferredLabel": "Web, Mobile & Software Dev",
        "definition": null,
        "createdDateTime": "2018-08-20T19:39:33+0000",
        "modifiedDateTime": "2023-12-19T19:18:21+0000"
      },
      "subCategory": {
        "id": "531770282584862733",
        "ontologyId": "upworkOccupation:webdevelopmentsubcategory",
        "type": [
          "OCCUPATION"
        ],
        "entityStatus": "ACTIVE",
        "preferredLabel": "Web Development",
        "definition": null,
        "createdDateTime": "2018-09-24T11:14:40+0000",
        "modifiedDateTime": "2023-07-10T17:01:25+0000"
      }
    }
  },
  "client": {
    "totalHires": 0,
    "totalPostedJobs": 3,
    "totalSpent": null,
    "verificationStatus": "VERIFIED",
    "location": {
      "city": null,
      "country": "Canada",
      "timezone": "America/New_York",
      "state": null,
      "offsetToUTC": "Americas"
    },
    "totalReviews": 0,
    "totalFeedback": 0.0,
    "companyRid": "0",
    "companyName": null,
    "edcUserId": "0",
    "lastContractPlatform": null,
    "lastContractRid": "0",
    "lastContractTitle": null,
    "hasFinancialPrivacy": false
  },
  "activityStat": {
    "jobActivity": {
      "lastClientActivity": "2025-07-30T12:27:07.263Z",
      "invitesSent": 12,
      "totalInvitedToInterview": 8,
      "totalHired": 1,
      "totalUnansweredInvites": 3,
      "totalOffered": 0,
      "totalRecommended": 2
    }
  }
}