Crowdex
Introduction

Crowdex Documentation

Welcome to the documentation for Crowdex, a Next.js application designed for investment and crowdfunding based on blockchain technology. This document outlines the functional and non-functional requirements, user roles, collaboration guidelines, and more.

Roles / Actors

Three different user roles have been identified in the application based on user experience (UX): Investor, Admin (Administrator), and Project Owner. Each of these roles has unique permissions and responsibilities, allowing for effective management and interaction within the application.

RoleDescription
InvestorA user of the application who is looking for investment opportunities and engages in funding projects. Investors have access to the project list, can view detailed information about each project, make investments, and monitor their investment portfolios through a dashboard. They also have the option to withdraw profits and participate in affiliate programs. Their key tasks include making informed investment decisions based on available data and analysis.
AdminAn application administrator responsible for managing users, overseeing operations, and maintaining the system. Admins have the authority to modify application settings, approve projects and investments, and resolve technical issues.
Project OwnerA user who creates and manages investment projects. Project Owners are responsible for providing detailed information about their projects, managing crowdfunding campaigns, and communicating with investors.

Features

  • Investment Process | Purchase: After successful KYC verification and acceptance of the investment amount, the funds should be automatically withdrawn from the user's balance. This stage finalizes the investment process, requiring a high level of security and user confirmation.
  • Investment Process | KYC: If the user has not previously passed KYC (Know Your Customer) verification, they should be redirected to a verification process conducted by an external system, such as Sumsub. This process must be smooth and integrated with the application to avoid deterring users.
  • Investment Process | Conditions: Before investing, the user must be informed of the investment conditions and agree to them. They should also enter the amount they wish to invest, which is a crucial part of the decision-making process.
  • Project Page: Each project's page must contain detailed information about the project, including investment details, image gallery, and an option to subscribe to a newsletter. This will provide potential investors with all the necessary information to make an investment decision.
  • Crowdex Investor Panel: The application should offer a clear and intuitive user interface, compliant with the provided requirements and design in Adobe XD. It must be responsive to ensure an excellent experience on various devices and screens. Additionally, the application should be available as a Progressive Web App (PWA), allowing users to use it similarly to native applications.
  • Crypto Wallet Deposit: Allows funding the account using cryptocurrencies, expanding the financial options for users interested in investing in blockchain technologies.
  • Fiat Wallet Deposit: On the wallet management page, the user can deposit fiat funds using ZEN, providing a convenient way to fund the account.
  • Wallet Management: The user has access to the current balance and transaction history on the wallet management page, enabling them to monitor and manage their finances.
  • My Portfolio: The "My Portfolio" page presents the user with information about the invested amounts and details of the transactions made.
  • System Language Selection: The user can select the interface language (Polish or English) and freely switch between them, increasing the application's usability in different markets.
  • Project List: After logging in, the user sees a list of available projects, along with their background, name, and issuer's logo. Clicking on a project takes them to its details.
  • Password Recovery: As part of the password recovery function, the user receives a link allowing them to set a new password, ensuring account access security.
  • User Login: Enables account access using email and password. If the password is forgotten, the user can request a link to reset it.
  • User Logout: After logging in, the user can log out of the system, which is a basic element of session management.
  • User Registration: Allows creating an account on the platform by filling out a registration form that includes the first name, last name, email, and password with confirmation. Before finalizing the registration, the user must accept the terms of service and the associated risks.
  • Settings: Allows editing user personal data, enabling easy updating of contact information and preferences.
  • Document Signing: The user can electronically sign documents and send them to the system, significantly speeding up administrative processes and increasing document management efficiency.
  • Agreements and Documents: The page allows users to view documents awaiting signature and already signed, which is crucial for maintaining order and legal compliance of transactions.
  • External Account Login: Similar to registration, the user can log in using external accounts (Google, Apple, Facebook), providing an alternative authentication method.
  • External Account Registration: Users can register and log in using existing accounts on Facebook, Google, or Apple, simplifying the registration and login process.
  • Support: The support page allows sending messages to customer support and viewing phone numbers for direct contact.
  • Certificate: After investing in a project, the user can generate an investor certificate, serving as proof of participation in the project.
  • Activity Calendar: Presents the history and future events related to the projects the user has invested in, helping in planning and tracking progress.

Non-Functional Requirements

ElementDetails
Frontend frameworkNextJS 14 / React
Programming languageTypeScript
DatabasePostgreSQL
Supported platformsGoogle Chrome > v115, Edge > v115, Safari > v16, Firefox > v115, Opera > v100
Infrastructure providerMicrosoft, Vercel
  1. The application must be designed for high performance and scalability to handle a growing number of users and transactions without negatively impacting response times.
  2. The application must ensure the encryption of sensitive data, stored in PostgreSQL and transmitted between client and server.
  3. The application must be protected against common attacks, such as Injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), etc. (OWASP Top 10).
  4. The application must be compatible with the latest two versions of the most popular browsers on both desktop and mobile devices.
  5. The mobile application should support various devices and screen resolutions.
  6. The application must be available 24/7, with minimal downtime, using reliable infrastructure from Vercel and Microsoft.
  7. The application must implement appropriate backup and recovery procedures to minimize the risk of data loss.

Design

PlatformLink
DesktopView design (opens in a new tab)
MobileView design (opens in a new tab)

Integrations

APILink
DigiShares APIDigiShares API (opens in a new tab)