# CLI e SDK

# Panoramica CLI

La CLI di Riseact è uno strumento che ti permette di creare, sviluppare e distribuire applicazioni che si integrano direttamente con la piattaforma Riseact.

Puoi utilizzare la CLI per creare un nuovo progetto,

## Funzionalità

- creare una nuova applicazione con un template predefinito
- distribuire l'applicazione su Riseact

## Requisiti

- Avere [Git](https://git-scm.com/) installato
- Un token [ngrok](https://ngrok.com/) per creare un tunnel per il server di sviluppo
- Utilizzare l'ultima versione di [Chrome](https://www.google.com/chrome/) o [Firefox](https://www.mozilla.org/it/firefox/new/)

## Come iniziare

Per cominciare è necessario installare la CLI di Riseact. Per farlo, scarica la versione del tuo sistema operativo da [questa pagina](https://github.com/riseact/riseact-cli/releases)

Una volta scaricato il file, estrai il contenuto e spostati nella cartella tramite il terminale.

Per utilizzare la CLI è necessario aver configurato un account Partner, se non lo hai ancora fatto segui [questa guida](https://dev.riseact.org/docs/getting-started)

Una volta configurato l'account, esegui il comando

<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" id="bkmrk-%24-riseact-auth-login" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex">```
<span class="token-line" style="color:#393A34"><span class="token plain">$ riseact auth login</span><br></br></span>
```

<div class="buttonGroup__atx"><button aria-label="Copia il codice negli appunti" class="clean-btn" title="Copia" type="button"><span aria-hidden="true" class="copyButtonIcons_eSgA"><svg class="copyButtonIcon_y97N" viewbox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewbox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>e inserisci le credenziali del tuo account Partner.

Assicurati di aver [registrato un'applicazione](https://dev.riseact.org/docs/getting-started) su Riseact. Crea inizialmente un'applicazione privata su un organizzazione di sviluppo, in modo da poter testare l'applicazione senza pubblicarla.

Una volta fatto potrai inizializzare un nuovo progetto, utilizzando il comando

<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" id="bkmrk-%24-riseact-app-init" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex">```
<span class="token-line" style="color:#393A34"><span class="token plain">$ riseact app init</span><br></br></span>
```

<div class="buttonGroup__atx"><button aria-label="Copia il codice negli appunti" class="clean-btn" title="Copia" type="button"><span aria-hidden="true" class="copyButtonIcons_eSgA"><svg class="copyButtonIcon_y97N" viewbox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewbox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>e segui le istruzioni a schermo. Questo comando creerà una nuova cartella con il nome dell'applicazione e all'interno troverai i file necessari per iniziare a sviluppare.

Per sviluppare l'applicazione, spostati all'interno della cartella e avvia il server di sviluppo con il comando

<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" id="bkmrk-%24-riseact-app-dev" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex">```
<span class="token-line" style="color:#393A34"><span class="token plain">$ riseact app dev</span><br></br></span>
```

<div class="buttonGroup__atx"><button aria-label="Copia il codice negli appunti" class="clean-btn" title="Copia" type="button"><span aria-hidden="true" class="copyButtonIcons_eSgA"><svg class="copyButtonIcon_y97N" viewbox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewbox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>Questo comando avvierà un server locale e un tunnel ngrok per permetterti di testare l'applicazione su Riseact.

A questo punto accedi alla tua organizzazione di sviluppo su Riseact e vai alla lista delle [applicazioni private](https://admin.riseact.org/applications/private), da li potrai attivare l'applicazione e testarla.

---

*Contenuto importato da [https://dev.riseact.org/docs/cli/overview](https://dev.riseact.org/docs/cli/overview) il 2026-04-23 durante la migrazione iniziale della KB Metadonors. Aggiornare se il sorgente cambia.*

# Struttura dell'app

Il template Node delle applicazioni Riseact è progettato per essere flessibile e adattabile a diversi tipi di progetti. Fornisce una struttura di base per l'applicazione, ma è possibile personalizzarla in base alle proprie esigenze.

## Struttura di base

La struttura di base di un'applicazione Riseact è la seguente:

<div class="codeBlockContainer_Ckt0 theme-code-block" id="bkmrk-%E2%94%9C%E2%94%80%E2%94%80-client%E2%94%82%C2%A0%C2%A0-%E2%94%9C%E2%94%80%E2%94%80-in" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex">```
<span class="token-line" style="color:#393A34"><span class="token plain">├── client</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── index.html</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── LICENSE</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── package.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── public</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── riseact.png</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── src</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── assets</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── react.svg</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── components</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── Navbar</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │   ├── index.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │   └── NavButton.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── Page</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │       └── index.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── config</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── network.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── routing.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── hooks</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── useOrganization.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── main.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── Router.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── routes</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── Campaigns</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │   ├── Create.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │   ├── Detail.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │   ├── Form.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │   ├── index.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │   └── List</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │       ├── Filters.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │       ├── index.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   │       └── VisibilityBadge.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── Home</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │       └── index.tsx</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── utils</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── enumTranslate.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── vite-env.d.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── tsconfig.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── vite.config.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── common</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── gql-codegen.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── package.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── src</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── gql</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── fragment-masking.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── gql.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── graphql.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── index.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── queries.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── types.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── tsconfig.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── Dockerfile</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── LICENSE</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── package.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── package-lock.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── prisma</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── migrations</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── 20231031142218_init</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── migration.sql</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── migration_lock.toml</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── schema.prisma</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── README.md</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── server</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── package.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── src</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── config</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── database.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── riseact.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── controllers</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── organization.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── env.d.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── index.ts</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── tsconfig.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── tsconfig.build.json</span><br></br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── tsconfig.json</span><br></br></span>
```

<div class="buttonGroup__atx"><button aria-label="Copia il codice negli appunti" class="clean-btn" title="Copia" type="button"><span aria-hidden="true" class="copyButtonIcons_eSgA"><svg class="copyButtonIcon_y97N" viewbox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewbox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>## Client

La cartella `client` contiene il codice dell'applicazione front-end. Questa cartella è strutturata in modo da separare i componenti, le pagine, i hooks e le utility in cartelle separate.

- `index.html`: file HTML principale dell'applicazione
- `package.json`: file di configurazione del progetto
- `public`: cartella contenente i file statici dell'applicazione
- `src`: cartella contenente il codice sorgente dell'applicazione
    - `assets`: cartella contenente i file multimediali
    - `components`: cartella contenente i componenti dell'applicazione
    - `config`: cartella contenente i file di configurazione
    - `hooks`: cartella contenente i custom hooks
    - `main.tsx`: file principale dell'applicazione
    - `Router.tsx`: file contenente la definizione delle rotte
    - `routes`: cartella contenente le pagine dell'applicazione
    - `utils`: cartella contenente le utility

## Common

La cartella `common` contiene il codice condiviso tra il client e il server. Questa cartella è strutturata in modo da separare le query GraphQL, i tipi e i file di configurazione.

- `gql-codegen.ts`: file di configurazione per la generazione dei tipi GraphQL
- `package.json`: file di configurazione del progetto
- `src`: cartella contenente il codice sorgente condiviso
    - `gql`: cartella contenente i file GraphQL
    - `queries.ts`: file contenente le query GraphQL
    - `types.ts`: file contenente i tipi TypeScript

## Server

La cartella `server` contiene il codice dell'applicazione back-end. Questa cartella è strutturata in modo da separare i controller, i file di configurazione e i file di ambiente.

- `package.json`: file di configurazione del progetto
- `src`: cartella contenente il codice sorgente dell'applicazione
    - `config`: cartella contenente i file di configurazione
    - `controllers`: cartella contenente i controller dell'applicazione
    - `env.d.ts`: file di definizione dei tipi per le variabili d'ambiente
    - `index.ts`: file principale dell'applicazione

## Altri file

- `Dockerfile`: file di configurazione per la creazione dell'immagine Docker
- `LICENSE`: file di licenza del progetto
- `package.json`: file di configurazione del progetto
- `package-lock.json`: file di lock delle dipendenze
- `prisma`: cartella contenente i file di configurazione di Prisma
- `README.md`: file di descrizione del progetto
- `tsconfig.build.json`: file di configurazione per la compilazione del progetto
- `tsconfig.json`: file di configurazione TypeScript del progetto

---

*Contenuto importato da [https://dev.riseact.org/docs/cli/app\_structure](https://dev.riseact.org/docs/cli/app_structure) il 2026-04-23 durante la migrazione iniziale della KB Metadonors. Aggiornare se il sorgente cambia.*