{"id":24442066,"url":"https://github.com/sbrunomello/simdex","last_synced_at":"2026-02-27T19:18:27.910Z","repository":{"id":204060828,"uuid":"711025495","full_name":"sbrunomello/simdex","owner":"sbrunomello","description":"Backend of a crypto exchange simulator with account creation, login, and transaction simulation using Spring Security.","archived":false,"fork":false,"pushed_at":"2025-04-07T18:43:40.000Z","size":124,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-09T12:11:33.656Z","etag":null,"topics":["api-rest","blockchain","cryptocurrency","exchange","finance","java","jwt","open-source","plataform","simulator","spring-boot","spring-mvc","spring-security"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sbrunomello.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-10-28T02:07:10.000Z","updated_at":"2025-04-07T18:43:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"1cf8991b-b5b1-4e41-b19f-ee8d616a7813","html_url":"https://github.com/sbrunomello/simdex","commit_stats":null,"previous_names":["sbrunomello/simdex"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sbrunomello/simdex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbrunomello%2Fsimdex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbrunomello%2Fsimdex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbrunomello%2Fsimdex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbrunomello%2Fsimdex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sbrunomello","download_url":"https://codeload.github.com/sbrunomello/simdex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbrunomello%2Fsimdex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29909493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T17:28:36.873Z","status":"ssl_error","status_checked_at":"2026-02-27T17:28:20.970Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","blockchain","cryptocurrency","exchange","finance","java","jwt","open-source","plataform","simulator","spring-boot","spring-mvc","spring-security"],"created_at":"2025-01-20T21:44:40.752Z","updated_at":"2026-02-27T19:18:27.888Z","avatar_url":"https://github.com/sbrunomello.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white)\n![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge\u0026logo=spring\u0026logoColor=white)\u003cbr\u003e\n# Simdex – SIMulated DEXchange (Spring Boot Backend)\n\n**Simdex** is a simulation platform for decentralized crypto exchange logic, built with Spring Boot. It features secure user registration/login, crypto price tracking via CoinMarketCap, and basic portfolio management. Designed as an educational and prototyping project for fullstack blockchain enthusiasts.\n\n\u003e 🧪 This backend powers the [Simdex Frontend](https://github.com/sbrunomello/simdex-web)\n\n---\n\n## 💡 Key Features\n\n- ✅ **User Registration \u0026 Login** with Spring Security\n- 🔑 **JWT Authentication** with token-based sessions\n- 📈 **Live Crypto Price Tracking** using CoinMarketCap API\n- 💼 **User Portfolio Structure** for holding simulated assets\n- 📦 Modular architecture with clean domain separation\n- 🧪 Ready for REST API testing (Postman/Insomnia)\n\n---\n\n## 🔐 Auth System\n\n- `/auth/register` → creates a new user  \n- `/auth/login` → returns JWT token  \n- Role system via `ERole.ROLE_ADMIN`, extendable\n\nSpring Security is fully configured with:\n\n- AuthenticationManager\n- BCrypt password encoding\n- TokenService for JWT generation\n\n---\n\n## 📊 Crypto Price Endpoint\n\n- `/api/v2/price` → Returns real-time BTC price from CoinMarketCap API\n- Uses native Java 11+ `HttpClient` and `javax.json` to parse the response\n- Requires a valid API key from CMC in the controller\n\n```java\nJsonObject cryptoData = jsonObject.getJsonObject(\"data\").getJsonObject(\"BTC\");\nJsonNumber price = cryptoData.getJsonObject(\"quote\").getJsonObject(\"USD\").getJsonNumber(\"price\");\n```\n\n---\n\n## 📂 Project Structure\n\n```\n/controllers\n    AuthController.java          → login/register endpoints\n    CMCIntegrationController.java → price data from CoinMarketCap\n    SimdexController.java        → basic health/test routes\n\n/domain\n    user/                        → user, roles, DTOs\n    crypto/                      → (holdings, portfolio – WIP)\n\n/repositories\n    UserRepository.java\n\n/security\n    SecurityConfig.java\n    TokenService.java\n\n/resources\n    application.properties\n\npom.xml\n```\n\n---\n\n## ▶️ How to Run\n\n### Prerequisites\n\n- Java 17+\n- Maven\n- PostgreSQL (or H2 for dev)\n- CoinMarketCap API Key (free plan works)\n\n### Steps\n\n```bash\ngit clone https://github.com/sbrunomello/simdex.git\ncd simdex\nmvn spring-boot:run\n```\n\nBackend will run on:  \n`http://localhost:8080`\n\n---\n\n## 🧪 Example Requests\n\n### Register\n\n```http\nPOST /auth/register\n{\n  \"username\": \"mello\",\n  \"password\": \"123456\",\n  \"email\": \"mello@example.com\",\n  \"firstName\": \"Bruno\",\n  \"lastName\": \"Mello\"\n}\n```\n\n### Get BTC Price\n\n```http\nGET /api/v2/price\n→ name: Bitcoin | price: 69234.56\n```\n\n---\n\n## 🧩 Frontend\n\nSimdex is designed to work with:  \n👉 [`simdex-web`](https://github.com/sbrunomello/simdex-web) – Angular app for user interface, wallet, and order management\n\n---\n\n## 🚀 Roadmap\n\n- [ ] Add real-time price updates via WebSocket\n- [ ] User portfolio API (add/remove simulated assets)\n- [ ] Simulated buy/sell logic\n- [ ] Historical chart tracking (via CMC)\n- [ ] Admin dashboard\n\n---\n\n## 📬 Contact\n\n- [GitHub](https://github.com/sbrunomello)  \nBuilt with ⚙️ by Mello\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbrunomello%2Fsimdex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbrunomello%2Fsimdex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbrunomello%2Fsimdex/lists"}