How to build a Portfolio Tracking like CoinMarketCap from Zero (Part 1)
January 1, 2024
How to build a Portfolio Tracking like CoinMarketCap from Zero (Part 1)
Requirements
Define Minimum Viable Product

The MVP will focus on essential features required to track and manage portfolios of various assets, including cryptocurrencies. It will serve as a foundation for future feature enhancements adding later: NFTs, stocks, real estate, and custom assets.

  • User Registration and Authentication
  • User registration with email and password.
  • User registration with phone number.
  • User registration with socials: tiktok, snapchat, facebook, Instagram, google, apple.
  • Basic user profile management.
  • Portfolio Management
  • Ability to add, edit, and delete assets in the portfolio.
  • Support for cryptocurrencies first.
  • Basic input fields for asset details (e.g., name, quantity, purchase price).
  • Multiple portfolios per user.
  • Real-time Asset Valuation
  • Integration with a single market data source to fetch and display real-time asset valuations. Integration with (Coinmarketcap.com API).
  • Basic chart or graph to visualize portfolio value over time. Integration with (Trading View API).
  • Marketplace
  • Coin monitoring with filtering options.
  • Integration with additional market data sources.
  • Alerts and Notifications
  • Ability to set price change alerts for individual assets.
  • Basic push notifications for alerts.
  • Data Storage
  • Secure storage of user portfolio data.
  • User Interface
  • A simple and intuitive user interface adhering to platform-specific design guidelines for iOS and Android.
  • Vertically place assets under category headers on main portfolio screens).
  • Multilingual support (English, Spanish, French, Arabic, Chinese, - Hebrew, German, Indonesian, Tagalog)
  • Advanced Features:
  • Advanced portfolio analytics and performance metrics.
  • NFTs, stocks, real estate, and custom assets.
  • Data import/export functionality (export .csv, .xlsx, .pdf).
  • Tax calculation and reporting.
  • User customization options (e.g., custom asset categories).
  • Technical Requirements

    This Technical Requirements Document outlines the technical aspects of the portfolio tracking mobile application project, specifying the technologies, APIs, data storage, security, performance, testing, documentation, and deployment requirements. Following these technical requirements will lead to the successful development and deployment of the application, meeting the needs of investors and asset managers.

  • System Architecture
  • Mobile Application: The mobile application will be developed using Flutter, ensuring a responsive and consistent user experience across iOS and Android platforms.
  • Backend System: The backend system will be built using Node.js, providing a robust and scalable infrastructure to handle user data, asset data, and real-time market data.
  • Frontend Web: The website will be implemented using Next.js, supporting for SSR and SSG, helping to speed up page loading and SEO.
  • APIs and Integrations
  • The features are accessible via secure REST API endpoints.
  • Integration with market data providers for real-time asset valuations. (Coinmarketcap.com, coingecko.com, coinbase.com, binance.com).
  • Integration with Apple and Google for social login
  • Using Firebase for push notification services in alerts
  • Technology Stack
  • 3.1. Node.js

    3.2. Next.js

    3.3. Flutter

  • API Requirements
  • 4.1. Authentication

    4.2. Portfolio Management

    4.3. Transaction Management

    4.4. Real-time Data Integration

    4.5. Notifications

    4.6. Marketplace

  • Scripts
  • Init market chart data
  • Init exchange list data
  • Init network categories data
  • Init currency data
  • Performance and Scalability
  • 6.1. Application Performance

    6.2. Scalability

    Data Storage and Security
  • Data Storage
  • Store user and asset data in a secure and scalable database.
  • Implement data backup and recovery mechanisms.
  • Implement data archiving for historical data.
  • Data Security
  • Encrypt sensitive data at rest and in transit.
  • Implement role-based access control.
  • Regularly audit and monitor system security.
  • Data Backup and Recovery
  • Set up automated data backup and recovery processes.
  • Ensure the ability to recover data in case of system failures or data corruption.
  • Minimum of two DB Servers (Primary and Secondary) and data replication at specific time intervals.
  • Deployment
  • iOS App Deployment
  • Deploy the iOS app to the Apple App Store.
  • Follow Apple's guidelines for app submission.
  • Android App Deployment
  • Deploy the Android app to Google Play Store.
  • Adhere to Google's app submission requirements.
  • Backend Deployment
  • Deploy the backend system to a reliable and scalable cloud hosting provider.
  • Ensure high availability and load balancing (Jenkins, AWS).
  • Frontend Deployment
  • Ensure the packaging is into lightweight, static files that are system-friendly.
  • Get started
    🏛 Project Configuration and Deployment Structure

    Project structure and implementation framework

    CI/CD enviroment
    CI/CD enviroment
  • Use Jenkins-ci, AWS CodeDeploy, AWS S3 to build a CI/CD environment
  • When receiving a push request from Bitbucket, use Jenkins-ci to build and test
  • In case of the main branch, send the build file to AWS S3 and request deployment from AWS CodeDeploy
  • deployment environment
    deployment environment
  • Design data model with Sequelize and PostgreSQL, develop API server with NestJS
  • Build deployment environment with AWS CodeDeploy, AWS EC2, Docker
  • Improve server stability and scalability with Docker
  • Monitor server with Netdata
  • 🚀 Continue …

    Discussion (0)

    Loading...

    Recommended articles

    More articles ➜
    How to notify Slack for AWS CodePipeline

    How to notify Slack for AWS CodePipeline

    To notify Slack for AWS CodePipeline, create a notification rule for the pipeline, selecting all events and Slack as the target. Register the Slack channel as a target and configure a new chatbot client. After authorizing Slack, specify the Slack channel to connect to, set the chatbot's privileges, and establish guard rules. With read-only access for both allowed rules and guard conditions, the pipeline can trigger notifications to the Slack channel.

    DevOps
    Beiryu

    Beiryu

    Contributor

    0
    Exploring Colyseus: Building Scalable Game Servers and Enhancing Team Performance

    Exploring Colyseus: Building Scalable Game Servers and Enhancing Team Performance

    In the world of multiplayer game development, having a robust and scalable game server is crucial for delivering a seamless gaming experience to players. In this blog post, we'll dive into Colyseus, a powerful framework for building game servers, and explore its features, benefits, and how it can improve team performance. We'll also take a closer look at the Colyseus playground and its role in game server development.

    Architecture
    Backend
    DevOps
    Beiryu

    Beiryu

    Contributor

    0
    Subscribe to the newsletter
    Get emails from me about web development, tech, and early access to new articles.