| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
This project involves creating an application to query exchanges using the CoinAPI.io. The app lists available exchanges and provides specific details about each, such as name, ID, and trading volume.
| Error Code | Meaning |
|---|---|
| 400 | Bad Request -- There is something wrong with your request |
| 401 | Unauthorized -- Your API key is wrong |
| 403 | Forbidden -- Your API key doesn't have enough privileges to access this resource |
| 429 | Too many requests -- You have exceeded your API key rate limits |
| 550 | No data -- You requested specific single item that we don't have at this moment |
To use this app, you need an API key from CoinAPI.io. This key is securely managed using the secrets-gradle-plugin. If the secrets/apiKey.properties file is missing, fallback values from default.properties will be used.
For more information and to obtain an API key, visit here.
Ensure the "default.properties" File is Configured:
Example default.properties:
COIN_API_KEY=*********************************Replace the placeholder with your actual API key. It should look like this:
COIN_API_KEY=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXBy following these steps, you ensure that the project builds successfully in all environments.
For this project, I opted for an integrated testing approach in the data layer to avoid redundant unit tests for each implementation. While unit tests are effective for the domain and presentation layers, they can become repetitive when testing data interactions.
By adopting the Repository Pattern, I perform integrated tests that cover the entire data flow, from the data source (API or DAO) to the repository EG: Data layer: RepositoryImpl -> DataSource -> Source API (remote) or Database DAO (local). This ensures the correctness of the data flow by validating end-to-end data retrieval and error handling. This approach reduces unnecessary tests and enhances system reliability by focusing on complete data flows rather than isolated components.
The project includes a comprehensive in-house design system named Pluto, implemented within the libraries/design module. Pluto centralizes all UI/UX design elements and components, ensuring a consistent and cohesive user experience throughout the application.
Credit to Mercado Bitcoin for the challenge requirements.
| Back | FazBrowse Home | New Git URL |