Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 0 additions & 19 deletions .devcontainer/devcontainer.json

This file was deleted.

49 changes: 0 additions & 49 deletions .devcontainer/setup.sh

This file was deleted.

51 changes: 51 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts

# anchor build artifacts
/anchor/.anchor/
/anchor/target/

# local worktrees
.worktrees/

# local leftover from pre-move app directory (should not be committed)
mentorvault-app/
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.next
node_modules
pnpm-lock.yaml
app/generated
6 changes: 6 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "es5"
}
135 changes: 27 additions & 108 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,119 +1,38 @@
# Solana Hackathon con WayLearn
![Banner](./images/BANNERHACKATHON.png)
# MentorVault

Solana es una blockchain de capa 1, es decir, cuenta con su propia infraestructura y no depende de otras blockchains para funcionar. Se encuentra orientada al alto rendimiento, y fue creada para soportar aplicaciones descentralizadas a gran escala con costos mínimos y confirmaciones casi inmediatas. Su diseño prioriza la eficiencia en la ejecución y la paralelización de transacciones.
Proyecto presentado en hackathon. MentorVault conecta patrocinadores, mentores y estudiantes para financiar talento y dar seguimiento a su progreso.

Rust es el lenguaje principal para desarrollar programas en Solana. A través de él se implementa la lógica on-chain utilizando el modelo de cuentas y programas de la red, permitiendo construir contratos inteligentes seguros, eficientes y altamente optimizables.
## Problema
- Falta de financiamiento y acompanamiento continuo para estudiantes con potencial.
- Poca visibilidad para patrocinadores sobre el impacto real.

Para facilitar el desarrollo en Rust sobre Solana existe Anchor, un framework que simplifica enormemente la creación de programas on-chain. Anchor proporciona:
## Solucion
MentorVault crea un flujo simple donde:
- Patrocinadores financian cohortes o estudiantes.
- Mentores acompanian el progreso.
- Estudiantes reportan avances y hitos.

* Un sistema de validación automática de cuentas mediante macros.
* Manejo simplificado de serialización y deserialización de datos.
* Gestión de PDAs (Program Derived Addresses) de forma declarativa.
* Generación automática de IDL (Interface Definition Language) para facilitar la interacción desde el frontend.
* Un entorno de testing más sencillo y estructurado.
## Features clave
- Vistas dedicadas para patrocinador, mentor y estudiante.
- Flujo de aprobacion y seguimiento de evidencia.
- Panel con indicadores de progreso.

Anchor, nos permite enfocarnos en la lógica del programa en lugar de manejar manualmente detalles de bajo nivel como validaciones repetitivas, manejo de bytes o verificación de firmas. Esto mejora la seguridad, reduce errores comunes y acelera el proceso de desarrollo.

# Entornos de desarollo
Hemos preparado el siguiente repositorio para que comiences a trabajar lo antes posible en tu proyecto si la necesidad de instalar nada de forma local!. Para ello, te porporcionamos las siguientes alternativas:

* Uso de Codespaces
* Uso de un Entorno Local (Tu Propia PC)

## Codespaces (Github)
Puedes comenzar dándole Fork a este repositorio (abajo te explicamos cómo 👇)

![fork](./images/fork.png)

* Puedes renombrar el repositorio a lo que sea que se ajuste con tu proyecto.
* Asegúrate de clonar este repositorio a tu cuenta usando el botón **`Fork`**.
* Presiona el botón **`<> Code`** y luego haz click en la sección **`Codespaces`**

![codespaces](./images/codespaces.png)

Por último, presiona **`Create codespace on master`**. Esto abrirá el proyecto en una interfaz gráfica de Visual Studio Code e instalará todas las herramientas necesarias para empezar a programar (es muy importante esperar a que este proceso termine):

![instalacion](./images/Instalacion.png)

El proceso de instalación finaliza cuando la terminal se reinicia y queda de la siguiente manera:

![fin](images/fin.png)

El `setup.sh` instala lo siguiente:

* `rust`
* dependencias para `Solana`
* `Solana-cli`
* `Anchor-cli`
* `spl-token`
* `surfpool`
* `node` y `nvm`
* `vite`

Además:

* Crea una wallet que pueds consultar con: `solana address`
* Configura el entorno de RPC a devnet

Finalmente, crea una carpeta llamada `template_codespaces` donde se encuentra todo lo necesario para desarrollar el proyecto, tanto la parte del `frontend` como el `backend`.

> ⚠️ Al terminar el proceso de preparación del entorno es necesario ejecutar el siguiente comando:

```bash
export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
```

> ℹ️ Recuerda moverte a la carpeta creada con el comando `cd template_codespaces`. Para correr proyecto e interactuar con el frontend es necesario ejecutar el comando `npm install` segudo de `npm run dev`, lo que levantara el puerto 5173 habilitando la siguiente dirección: `http://localhost:5173`

> ℹ️ El build del proyecto se hace con `anchor build` mientras que el despliegue con `anchor deploy`

> ⚠️ Antes de hacer el deploy a la devnet asegurate que en el archivo `anchor.toml` en la seccion `provider` sea: `cluster = "devnet"`, de lo contrario todas las pruebas a realizar se harán local (dentro de codespaces).


## Entorno Local

> ℹ️ Se recomienta el uso de sistemas operativos base linux o en su defecto WSL en el caso de usar Windows

Lo primero que se debe hacer es un `git clone` al repositorio lo que se hace corriendo el siguiente comando en la terminal:
## Stack
- Frontend: React / Next.js
- Estilos: CSS moderno (tema oscuro)
- Blockchain: Solana (program + interacciones)

## Como ejecutar
```bash
git clone https://github.com/WayLearnLatam/Solana-Hackathon-Template-FullStack.git
```
Posteriormente nos movemos mediante `cd Solana-Hackathon-Template-FullStack` a la carpeta del proyecto donde tenemos dos posibles opciones para realizar la instalación:

### Opción 1: instalación full local

Esta alternativa instala todas las dependencias en tu sistema. Para ello es necesario ejecutar el siguiente comando (tomando en cuenta que estas dentro de la carpeta `Solana-Hackathon-Template-FullStack`):

```bash
chmod +x local-setup.sh

./local-setup.sh
npm install
npm run dev
```

### Opción 2 (recomendado): instalación con devcontainer (docker)

> ℹ️ Como requisito es necesario contar con Vscode y tener las extensiones de `devcontainer` y `docker` instaladas.

Docker es una plataforma que permite crear, ejecutar y gestionar aplicaciones en contenedores. Un contenedor Docker es una unidad estandarizada que empaqueta una aplicación junto con todo lo necesario para ejecutarse: código, bibliotecas, dependencias, herramientas de sistema y tiempo de ejecución. Esto garantiza que la aplicación funcione de forma consistente en cualquier entorno.

Docker se basa en la virtualización a nivel de sistema operativo, compartiendo el kernel del sistema anfitrión, lo que lo hace más ligero y eficiente que las máquinas virtuales tradicionales.

Al abrir el proyecto (escribiendo `code .` en la terminal) nos abrirá Vscode con el siguiente mensaje en la parte inferior derecha:

![devcontainer](./images/devcontainer.png)

Donde daremos clic en `Reopen in Container`

> ⚠️ Si no te aparece entonces da clic en el icono de la campana ubicado en la parte inferior derecha.

En dado caso de que no tengas las extensiones instaladas te aparecerá la siguiente ventana (solo presiona install):

![install](./images/install.png)

> ⚠️ Al terminal la instalación de docker aparecerá de nuevo una ventana emergente en la parte inferior izquierda donde presionaremos `continue`
## Demo
- (Agregar enlace o captura si aplica)

Una vez empezado el proceso esperar a que termine. Puede tomar un tiempo debido a que se instalan todas las dependencias similar a la instalación en codespaces.
## Equipo
- Maikol Castellano

>ℹ️ Docuemntación oficial: https://solana.com/developers/templates/react-vite-anchor
## Hackathon
Fork de plantilla oficial de WayLearn. Repositorio reorganizado para presentacion.
18 changes: 18 additions & 0 deletions anchor/Anchor.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[toolchain]

[features]
resolution = true
skip-lint = false

[programs.devnet]
vault = "Bz1ifM7QV7pBSV9SmzRTDLn7bwYQzZurDpZkMBR1dM7n"

[registry]
url = "https://api.apr.dev"

[provider]
cluster = "devnet"
wallet = "~/.config/solana/id.json"

[scripts]
test = "cargo test"
Loading