The application uses three PostgreSQL tables managed via Sequelize.
users
| Column | Type | Notes |
|---|
| id | UUID | Primary key, auto-generated |
| username | STRING | Unique |
| email | STRING | Unique |
| password | STRING | bcrypt hashed |
| stellarPublicKey | STRING | Auto-generated on signup |
| stellarSecretKey | STRING | Auto-generated on signup |
| firstName | STRING | Optional |
| lastName | STRING | Optional |
| createdAt | TIMESTAMP | Auto-managed by Sequelize |
| updatedAt | TIMESTAMP | Auto-managed by Sequelize |
transactions
| Column | Type | Notes |
|---|
| transactionId | UUID | Primary key, auto-generated |
| stellarTransactionId | STRING | Hash returned from Stellar network |
| from | STRING | Sender's Stellar public key |
| to | STRING | Receiver's Stellar public key |
| assetAmount | FLOAT | Amount of FUC transferred |
| assetCode | STRING | Always "FUC" |
| userId | UUID | Foreign key → users.id |
| createdAt | TIMESTAMP | Auto-managed by Sequelize |
| updatedAt | TIMESTAMP | Auto-managed by Sequelize |
admins
| Column | Type | Notes |
|---|
| id | UUID | Primary key, auto-generated |
| email | STRING | Unique |
| password | STRING | bcrypt hashed |
| createdAt | TIMESTAMP | Auto-managed by Sequelize |
| updatedAt | TIMESTAMP | Auto-managed by Sequelize |
Relationships
A user has many transactions. A transaction belongs to a user. This is defined in models/associations.js and enforced via the userId foreign key on the transactions table.