Skip to content

Commit 9c41e0c

Browse files
authored
Merge branch 'develop' into feat/participation-token-module
2 parents dff933a + 2b73055 commit 9c41e0c

31 files changed

+1939
-219
lines changed
40.1 KB
Loading

apps/backoffice-tokenization/src/app/globals.css

Lines changed: 129 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -6,134 +6,149 @@
66
@source "../../../../packages/shared/src/**/*.{ts,tsx}";
77
@source "../../../../packages/tw-blocks-shared/src/**/*.{ts,tsx}";
88

9+
/* Keep dark variant declaration for shared package compatibility */
910
@custom-variant dark (&:is(.dark *));
1011

1112
@theme inline {
13+
/* ─── Typography ─────────────────────────────────────────── */
14+
--font-sans: var(--font-inter);
15+
16+
/* ─── Shadcn semantic token mappings ─────────────────────── */
1217
--color-background: var(--background);
1318
--color-foreground: var(--foreground);
14-
--font-sans: var(--font-geist-sans);
15-
--font-mono: var(--font-geist-mono);
16-
--color-sidebar-ring: var(--sidebar-ring);
17-
--color-sidebar-border: var(--sidebar-border);
18-
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
19-
--color-sidebar-accent: var(--sidebar-accent);
20-
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
21-
--color-sidebar-primary: var(--sidebar-primary);
22-
--color-sidebar-foreground: var(--sidebar-foreground);
19+
--color-card: var(--card);
20+
--color-card-foreground: var(--card-foreground);
21+
--color-popover: var(--popover);
22+
--color-popover-foreground: var(--popover-foreground);
23+
--color-primary: var(--primary);
24+
--color-primary-foreground: var(--primary-foreground);
25+
--color-secondary: var(--secondary);
26+
--color-secondary-foreground: var(--secondary-foreground);
27+
--color-muted: var(--muted);
28+
--color-muted-foreground: var(--muted-foreground);
29+
--color-accent: var(--accent);
30+
--color-accent-foreground: var(--accent-foreground);
31+
--color-destructive: var(--destructive);
32+
--color-border: var(--border);
33+
--color-input: var(--input);
34+
--color-ring: var(--ring);
35+
36+
/* ─── Sidebar tokens ─────────────────────────────────────── */
2337
--color-sidebar: var(--sidebar);
24-
--color-chart-5: var(--chart-5);
25-
--color-chart-4: var(--chart-4);
26-
--color-chart-3: var(--chart-3);
27-
--color-chart-2: var(--chart-2);
38+
--color-sidebar-foreground: var(--sidebar-foreground);
39+
--color-sidebar-primary: var(--sidebar-primary);
40+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
41+
--color-sidebar-accent: var(--sidebar-accent);
42+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
43+
--color-sidebar-border: var(--sidebar-border);
44+
--color-sidebar-ring: var(--sidebar-ring);
45+
46+
/* ─── Design system — brand & status ─────────────────────── */
47+
--color-brand-primary: var(--brand-primary);
48+
--color-brand-primary-hover: var(--brand-primary-hover);
49+
--color-brand-primary-light: var(--brand-primary-light);
50+
--color-accent-orange: var(--accent-orange);
51+
--color-accent-orange-hover: var(--accent-orange-hover);
52+
--color-success: var(--success);
53+
--color-success-bg: var(--success-bg);
54+
--color-text-secondary: var(--text-secondary);
55+
--color-text-muted: var(--text-muted);
56+
57+
/* ─── Border radius (design guidelines) ──────────────────── */
58+
--radius-sm: 6px;
59+
--radius-md: 10px;
60+
--radius-lg: 14px;
61+
--radius-xl: 20px;
62+
63+
/* ─── Shadows ────────────────────────────────────────────── */
64+
--shadow-card: 0px 6px 20px rgba(16, 24, 40, 0.08);
65+
--shadow-hover: 0px 10px 28px rgba(16, 24, 40, 0.12);
66+
--shadow-button: 0px 4px 10px rgba(0, 0, 0, 0.08);
67+
68+
/* ─── Chart tokens ───────────────────────────────────────── */
2869
--color-chart-1: var(--chart-1);
29-
--color-ring: var(--ring);
30-
--color-input: var(--input);
31-
--color-border: var(--border);
32-
--color-destructive: var(--destructive);
33-
--color-accent-foreground: var(--accent-foreground);
34-
--color-accent: var(--accent);
35-
--color-muted-foreground: var(--muted-foreground);
36-
--color-muted: var(--muted);
37-
--color-secondary-foreground: var(--secondary-foreground);
38-
--color-secondary: var(--secondary);
39-
--color-primary-foreground: var(--primary-foreground);
40-
--color-primary: var(--primary);
41-
--color-popover-foreground: var(--popover-foreground);
42-
--color-popover: var(--popover);
43-
--color-card-foreground: var(--card-foreground);
44-
--color-card: var(--card);
45-
--radius-sm: calc(var(--radius) - 4px);
46-
--radius-md: calc(var(--radius) - 2px);
47-
--radius-lg: var(--radius);
48-
--radius-xl: calc(var(--radius) + 4px);
70+
--color-chart-2: var(--chart-2);
71+
--color-chart-3: var(--chart-3);
72+
--color-chart-4: var(--chart-4);
73+
--color-chart-5: var(--chart-5);
74+
75+
/* ─── Rainbow animation (RainbowButton) ──────────────────── */
4976
--animate-rainbow: rainbow var(--speed, 2s) infinite linear;
50-
--color-color-5: var(--color-5);
51-
--color-color-4: var(--color-4);
52-
--color-color-3: var(--color-3);
53-
--color-color-2: var(--color-2);
5477
--color-color-1: var(--color-1);
78+
--color-color-2: var(--color-2);
79+
--color-color-3: var(--color-3);
80+
--color-color-4: var(--color-4);
81+
--color-color-5: var(--color-5);
5582
@keyframes rainbow {
56-
0% {
57-
background-position: 0%;
83+
0% {
84+
background-position: 0%;
5885
}
59-
100% {
60-
background-position: 200%;
86+
100% {
87+
background-position: 200%;
6188
}
6289
}
6390
}
6491

92+
/* ─── Light mode token values (only mode) ──────────────────── */
6593
:root {
66-
--radius: 0.625rem;
67-
--background: oklch(1 0 0);
68-
--foreground: oklch(0.145 0 0);
69-
--card: oklch(1 0 0);
70-
--card-foreground: oklch(0.145 0 0);
71-
--popover: oklch(1 0 0);
72-
--popover-foreground: oklch(0.145 0 0);
73-
--primary: oklch(0.205 0 0);
74-
--primary-foreground: oklch(0.985 0 0);
75-
--secondary: oklch(0.97 0 0);
76-
--secondary-foreground: oklch(0.205 0 0);
77-
--muted: oklch(0.97 0 0);
78-
--muted-foreground: oklch(0.556 0 0);
79-
--accent: oklch(0.97 0 0);
80-
--accent-foreground: oklch(0.205 0 0);
81-
--destructive: oklch(0.577 0.245 27.325);
82-
--border: oklch(0.922 0 0);
83-
--input: oklch(0.922 0 0);
84-
--ring: oklch(0.708 0 0);
85-
--chart-1: oklch(0.646 0.222 41.116);
86-
--chart-2: oklch(0.6 0.118 184.704);
87-
--chart-3: oklch(0.398 0.07 227.392);
88-
--chart-4: oklch(0.828 0.189 84.429);
89-
--chart-5: oklch(0.769 0.188 70.08);
90-
--sidebar: oklch(0.985 0 0);
91-
--sidebar-foreground: oklch(0.145 0 0);
92-
--sidebar-primary: oklch(0.205 0 0);
93-
--sidebar-primary-foreground: oklch(0.985 0 0);
94-
--sidebar-accent: oklch(0.97 0 0);
95-
--sidebar-accent-foreground: oklch(0.205 0 0);
96-
--sidebar-border: oklch(0.922 0 0);
97-
--sidebar-ring: oklch(0.708 0 0);
98-
--color-1: oklch(66.2% 0.225 25.9);
99-
--color-2: oklch(60.4% 0.26 302);
100-
--color-3: oklch(69.6% 0.165 251);
101-
--color-4: oklch(80.2% 0.134 225);
102-
--color-5: oklch(90.7% 0.231 133);
103-
}
94+
/* Base radius */
95+
--radius: 0.875rem;
96+
97+
/* Shadcn semantic tokens */
98+
--background: #F7F9FC;
99+
--foreground: #1F2A37;
100+
--card: #FFFFFF;
101+
--card-foreground: #1F2A37;
102+
--popover: #FFFFFF;
103+
--popover-foreground: #1F2A37;
104+
--primary: #1FA7D6;
105+
--primary-foreground: #FFFFFF;
106+
--secondary: #F1F4F8;
107+
--secondary-foreground: #1F2A37;
108+
--muted: #F1F4F8;
109+
--muted-foreground: #8A97A6;
110+
--accent: #E6F6FB;
111+
--accent-foreground: #1FA7D6;
112+
--destructive: #EF4444;
113+
--border: #E6ECF2;
114+
--input: #E6ECF2;
115+
--ring: #1FA7D6;
116+
117+
/* Sidebar */
118+
--sidebar: #FFFFFF;
119+
--sidebar-foreground: #1F2A37;
120+
--sidebar-primary: #1FA7D6;
121+
--sidebar-primary-foreground: #FFFFFF;
122+
--sidebar-accent: #E6F6FB;
123+
--sidebar-accent-foreground: #1FA7D6;
124+
--sidebar-border: #E6ECF2;
125+
--sidebar-ring: #1FA7D6;
126+
127+
/* Charts */
128+
--chart-1: #1FA7D6;
129+
--chart-2: #34C759;
130+
--chart-3: #F05A28;
131+
--chart-4: #FFB800;
132+
--chart-5: #8B5CF6;
104133

105-
.dark {
106-
--background: oklch(0.145 0 0);
107-
--foreground: oklch(0.985 0 0);
108-
--card: oklch(0.205 0 0);
109-
--card-foreground: oklch(0.985 0 0);
110-
--popover: oklch(0.205 0 0);
111-
--popover-foreground: oklch(0.985 0 0);
112-
--primary: oklch(0.922 0 0);
113-
--primary-foreground: oklch(0.205 0 0);
114-
--secondary: oklch(0.269 0 0);
115-
--secondary-foreground: oklch(0.985 0 0);
116-
--muted: oklch(0.269 0 0);
117-
--muted-foreground: oklch(0.708 0 0);
118-
--accent: oklch(0.269 0 0);
119-
--accent-foreground: oklch(0.985 0 0);
120-
--destructive: oklch(0.704 0.191 22.216);
121-
--border: oklch(1 0 0 / 10%);
122-
--input: oklch(1 0 0 / 15%);
123-
--ring: oklch(0.556 0 0);
124-
--chart-1: oklch(0.488 0.243 264.376);
125-
--chart-2: oklch(0.696 0.17 162.48);
126-
--chart-3: oklch(0.769 0.188 70.08);
127-
--chart-4: oklch(0.627 0.265 303.9);
128-
--chart-5: oklch(0.645 0.246 16.439);
129-
--sidebar: oklch(0.205 0 0);
130-
--sidebar-foreground: oklch(0.985 0 0);
131-
--sidebar-primary: oklch(0.488 0.243 264.376);
132-
--sidebar-primary-foreground: oklch(0.985 0 0);
133-
--sidebar-accent: oklch(0.269 0 0);
134-
--sidebar-accent-foreground: oklch(0.985 0 0);
135-
--sidebar-border: oklch(1 0 0 / 10%);
136-
--sidebar-ring: oklch(0.556 0 0);
134+
/* Brand */
135+
--brand-primary: #1FA7D6;
136+
--brand-primary-hover: #178BB5;
137+
--brand-primary-light: #E6F6FB;
138+
139+
/* Accent */
140+
--accent-orange: #F05A28;
141+
--accent-orange-hover: #D94E21;
142+
143+
/* Status */
144+
--success: #34C759;
145+
--success-bg: #E9F9EE;
146+
147+
/* Text variants */
148+
--text-secondary: #5B6B7C;
149+
--text-muted: #8A97A6;
150+
151+
/* Rainbow (RainbowButton) */
137152
--color-1: oklch(66.2% 0.225 25.9);
138153
--color-2: oklch(60.4% 0.26 302);
139154
--color-3: oklch(69.6% 0.165 251);
@@ -147,5 +162,7 @@
147162
}
148163
body {
149164
@apply bg-background text-foreground;
165+
/* Explicit font-family ensures Inter loads regardless of @theme inline resolution */
166+
font-family: var(--font-inter), Inter, system-ui, -apple-system, sans-serif;
150167
}
151-
}
168+
}

apps/core/README.md

Lines changed: 90 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,3 @@
1-
<p align="center">
2-
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="120" alt="Nest Logo" /></a>
3-
</p>
4-
5-
[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
6-
[circleci-url]: https://circleci.com/gh/nestjs/nest
7-
8-
<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
9-
<p align="center">
10-
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
11-
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
12-
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
13-
<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
14-
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
15-
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
16-
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
17-
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg" alt="Donate us"/></a>
18-
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
19-
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow" alt="Follow us on Twitter"></a>
20-
</p>
21-
<!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
22-
[![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->
23-
241
## Description
252

263
[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.
@@ -29,10 +6,99 @@
296

307
```bash
318
$ npm install
9+
```
10+
11+
## Variables de entorno
12+
13+
Copia el archivo de ejemplo y configura la URL de la base de datos:
14+
15+
```bash
16+
$ cp .env.example .env
17+
```
18+
19+
Edita el `.env` con las credenciales de la base de datos proporcionadas por el equipo:
20+
21+
```env
22+
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE"
23+
```
24+
25+
---
26+
27+
## 🗄️ Base de datos y Prisma
28+
29+
Este proyecto usa una base de datos PostgreSQL compartida en la nube. Todo el equipo apunta a la misma instancia.
30+
31+
### Comandos disponibles
32+
33+
```bash
34+
# Genera el Prisma Client (tipos y métodos ORM) a partir del schema.prisma
3235
$ npm run prisma:generate
33-
$ npm run prisma:migrate -- --name init
36+
37+
# Crea una nueva migración Y la aplica en la DB (solo quien hace el cambio)
38+
$ npm run prisma:migrate -- --name nombre_descriptivo
39+
40+
# Aplica migraciones pendientes sin generar ni resetear nada (todos los demás)
41+
$ npm run prisma:deploy
42+
```
43+
44+
---
45+
46+
### 🟢 Soy nuevo en el proyecto
47+
48+
Estos son los únicos comandos que debes correr para dejar la DB lista:
49+
50+
```bash
51+
$ npm run prisma:deploy # aplica todas las migraciones existentes en la DB
52+
$ npm run prisma:generate # genera el cliente con los tipos actuales
53+
```
54+
55+
> ⚠️ **Nunca corras `prisma:migrate` si no hiciste un cambio al schema, y nunca corras `prisma migrate reset` — eso borra todos los datos de la base de datos compartida.**
56+
57+
---
58+
59+
### 🔵 Hice pull y alguien modificó el schema
60+
61+
Cuando hagas `git pull` y veas cambios en `prisma/schema.prisma` o en `prisma/migrations/`, ejecuta:
62+
63+
```bash
64+
$ npm run prisma:deploy # sincroniza las migraciones nuevas con la DB
65+
$ npm run prisma:generate # regenera el cliente con los nuevos tipos
3466
```
3567

68+
---
69+
70+
### 🟡 Necesito modificar el schema de la base de datos
71+
72+
1. Edita `prisma/schema.prisma` con tus cambios
73+
2. Crea y aplica la migración en la DB:
74+
75+
```bash
76+
$ npm run prisma:migrate -- --name descripcion_del_cambio
77+
```
78+
79+
3. Commitea **ambos** archivos, esto es obligatorio:
80+
81+
```bash
82+
$ git add prisma/schema.prisma
83+
$ git add prisma/migrations/
84+
$ git commit -m "feat: descripcion del cambio"
85+
$ git push
86+
```
87+
88+
> El resto del equipo solo necesita hacer `git pull` y luego correr `prisma:deploy` + `prisma:generate`.
89+
90+
---
91+
92+
### Resumen del flujo
93+
94+
| Situación | Comandos |
95+
|---|---|
96+
| Soy nuevo en el proyecto | `prisma:deploy``prisma:generate` |
97+
| Hice pull con cambios de otro | `prisma:deploy``prisma:generate` |
98+
| Modifiqué el schema | `prisma:migrate -- --name <nombre>` → commit y push |
99+
100+
---
101+
36102
## Compile and run the project
37103

38104
```bash

0 commit comments

Comments
 (0)