diff --git a/README.md b/README.md index 02665db..3644ce2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ - API using the Express.js Framework and connecting to a MySQL and/or MSSQL Server database (No ORM usage such as Sequelize 😞). ## Description -- CryptoContentStore is a content store project that allows users to make purchases of digital products using cryptocurrencies. This project was initiated as part of the Full Stack Web Development course at the Technological Institute of Delicias (TecNM). +CryptoContentStore is an API that allows users to buy digital products using cryptocurrencies. It was originally created for the Full Stack Web Development course at the Technological Institute of Delicias (TecNM). ## Main Features @@ -14,20 +14,35 @@ - Each user can generate new deposit addresses that are associated with their user ID upon creation. - **Transactions and Cryptocurrencies:** - - Once the user has generated a deposit address and made a deposit, the database records and processes the transaction, adding the corresponding amount of tokens to the amount of cryptocurrency deposited in the address. Additionally, this transaction can be verified from any public network block explorer. - + - Deposits sent to these addresses are monitored periodically using the Bitcoin RPC API. + - Transactions are stored in the database and converted into tokens once validated. + - Each transaction can be checked on any public Testnet block explorer. + - **Digital Products:** - - The store plans to offer digital products for purchase from anywhere in the world without the need for centralized intermediaries thanks to the crypto's network (BTC Testnet). + - Users will be able to exchange their tokens for digital items without relying on a centralized payment gateway. + - All operations occur on Bitcoin Testnet for development purposes. ## Project Structure -The project has been carefully organized to improve code clarity and maintainability. The structure includes: +The codebase is organized into simple modules: + +- **config/** – Connection settings for MySQL and the Bitcoin Core client. +- **routes/** – Contains user-related endpoints such as login and address creation. +- **app.js** – Initializes the Express server, subscribes to ZeroMQ events from the Bitcoin node and periodically checks transactions. + +Routes are separated to keep the API clean and easy to extend. -- **Folders:** - - Folders are logically distributed to house specific components of the project (e.g., authentication, transactions, products, etc.). +## Getting Started -- **Routes and Endpoints:** - - Routes and endpoints have been clearly defined to facilitate navigation and understanding of the application flow. +1. Install dependencies: + ```bash + npm install + ``` +2. Start the server: + ```bash + node app.js + ``` + The API listens on port **3002** by default. ## Author - [Mario Lujan](https://github.com/maluxz) @@ -38,7 +53,7 @@ The project has been carefully organized to improve code clarity and maintainabi - API utilizando el Framework Express.js y que conecta a una base de datos MySQL y/o MSSQL Server (No se cuenta con uso de ORM como Sequelize 😞). ## Descripción -- CryptoContentStore es un proyecto de tienda de contenido que permite a los usuarios realizar compras de productos digitales utilizando criptomonedas. Este proyecto fue iniciado como parte de la materia de Desarrollo Web Full Stack del Instituto Tecnológico de Delicias (TecNM). +CryptoContentStore es una API para adquirir productos digitales con criptomonedas. Surgió como proyecto de la materia de Desarrollo Web Full Stack en el Instituto Tecnológico de Delicias (TecNM). ## Características Principales @@ -50,20 +65,34 @@ The project has been carefully organized to improve code clarity and maintainabi - Cada usuario puede generar nuevas direcciónes de deposito que al crearse se asocian a su ID de usuario. - **Transacciones y Criptomonedas:** - - Una vez que el usuario haya generado alguna dirección de deposito y haga un deposito la base de datos registra y procesa la transacción agregando la cantidad de fichas correspondiente a la cantidad de criptomoneda depositada en la dirección, además esta transacción se puede verificar desde cualquier explorador de bloques de la red pública. - + - Los depósitos enviados a estas direcciones se consultan periódicamente mediante la API RPC de Bitcoin. + - Las transacciones se guardan en la base de datos y, una vez validadas, se convierten en fichas para el usuario. + - Cada movimiento puede revisarse en un explorador público de la Testnet. + - **Productos Digitales:** - - La tienda planea ofrecer productos digitales para compra desde cualquier parte del mundo sin necesidad de intermediarios gracias a la red. + - Los usuarios podrán intercambiar sus fichas por artículos digitales sin depender de una pasarela de pagos centralizada. + - Todas las operaciones se realizan sobre Bitcoin Testnet con fines de desarrollo. ## Estructura del Proyecto +El código se organiza en módulos sencillos: + +- **config/** – configuraciones de conexión a MySQL y al cliente de Bitcoin Core. +- **routes/** – contiene los endpoints para usuarios, inicio de sesión y creación de direcciones. +- **app.js** – inicializa Express, se suscribe a eventos ZeroMQ del nodo Bitcoin y valida transacciones de forma periódica. -El proyecto ha sido organizado cuidadosamente para mejorar la claridad y mantenibilidad del código. La estructura incluye: +Las rutas están separadas para mantener una API limpia y fácil de extender. -- **Carpetas:** - - Las carpetas están distribuidas de manera lógica para albergar componentes específicos del proyecto (por ejemplo, autenticación, transacciones, productos, etc.). +## Primeros Pasos -- **Rutas y Endpoints:** - - Las rutas y endpoints han sido definidos de manera clara para facilitar la navegación y comprensión del flujo de la aplicación. +1. Instala las dependencias: + ```bash + npm install + ``` +2. Inicia el servidor: + ```bash + node app.js + ``` + La API escucha en el puerto **3002** por defecto. ## Autor - [Mario Lujan](https://github.com/maluxz)