# Lansarea: Deploy pe AWS (gratuit)

Asta e. Lectia finala. La sfarsit, Waitlist Wizard va fi live pe internet — accesibil oricui are URL-ul. Tot ce ai construit in ultimele noua lectii se reuneste aici.

## Strategia de deploy

Vom folosi **AWS Amplify** — cea mai simpla cale de a face deploy la o aplicatie Next.js pe AWS. Amplify se conecteaza la repository-ul tau GitHub, construieste aplicatia automat si o gazduieste pe un CDN global (Content Delivery Network).

<div class="concept-box">
<h4>Concept</h4>
<strong>Deploy</strong> este procesul de a lua codul de pe computerul tau si de a-l pune pe un server unde oricine din lume il poate accesa. <strong>AWS Amplify</strong> automatizeaza asta: faci push la cod pe GitHub, iar Amplify il construieste si il face deploy automat.
</div>

## Pregatirea pentru deploy

Inainte sa facem deploy, hai sa ne asiguram ca totul e gata:

<div class="try-it">
<h4>Incearca</h4>
In Claude Code:<br><br>
<strong>"Review the project for deployment readiness. Check:
1. No hardcoded localhost URLs
2. Environment variables are in .env.local (not committed)
3. The build completes without errors (run npm run build)
4. All sensitive data is in .gitignore
5. Create a .env.example file listing required environment variables without actual values"</strong>
</div>

Daca `npm run build` arata erori, partajeaza-le cu Claude pentru a le repara. Build-ul trebuie sa treaca inainte sa putem face deploy.

## Push pe GitHub

Mai intai, avem nevoie ca codul tau sa fie pe GitHub pentru ca Amplify sa il poata accesa:

**Pasul 1: Creeaza un repository GitHub**
1. Mergi la github.com si apasa iconita "+" > "New repository"
2. Numeste-l `waitlist-wizard`
3. Pastreaza-l **Private** (codul tau, alegerea ta)
4. Nu adauga README, .gitignore sau licenta (le avem deja)
5. Apasa "Create repository"

**Pasul 2: Incarca codul**

<div class="try-it">
<h4>Incearca</h4>
In Claude Code:<br><br>
<strong>"Help me push this project to GitHub. The repository URL is https://github.com/[your-username]/waitlist-wizard.git. Add the remote, and push the main branch."</strong>
<br><br>
Inlocuieste [your-username] cu username-ul tau real de GitHub.
</div>

Claude va rula comenzile git:
```
git remote add origin https://github.com/yourusername/waitlist-wizard.git
git branch -M main
git push -u origin main
```

## Deploy cu AWS Amplify

Acum vine partea interesanta:

**Pasul 1:** Mergi la **AWS Amplify Console** (cauta "Amplify" in consola AWS)

**Pasul 2:** Apasa **"Create new app"** > **"Host web app"**

**Pasul 3:** Alege **GitHub** ca sursa si autorizeaza AWS sa iti acceseze repository-urile

**Pasul 4:** Selecteaza repository-ul `waitlist-wizard` si branch-ul `main`

**Pasul 5:** Amplify va detecta automat ca este un proiect Next.js si va configura setarile de build. Revizuieste-le — ar trebui sa arate corect.

**Pasul 6:** Adauga variabilele de mediu:
- Apasa "Advanced settings"
- Adauga `ADMIN_PASSWORD` cu parola aleasa de tine

**Pasul 7:** Apasa **"Save and deploy"**

Asteapta 2-3 minute. AWS Amplify construieste aplicatia, o impacheteaza si o distribuie in reteaua lor globala.

Cand build-ul se termina, vei vedea un URL de genul: `https://main.d1a2b3c4d5.amplifyapp.com`

<div class="try-it">
<h4>Incearca</h4>
Apasa pe URL-ul tau Amplify. Ar trebui sa vezi pagina de prezentare Waitlist Wizard — live pe internet! Incearca sa trimiti un email si sa vizitezi pagina /admin.
</div>

## Conectarea DynamoDB (inlocuirea stocarii JSON)

Stocarea in fisier JSON a functionat pentru dezvoltare, dar nu va functiona pe AWS Amplify (mediile serverless nu au sisteme de fisiere persistente). Hai sa trecem la DynamoDB:

<div class="try-it">
<h4>Incearca</h4>
In Claude Code:<br><br>
<strong>"Switch the data storage from the local JSON file to AWS DynamoDB:
1. Create a DynamoDB table called 'waitlist-signups' with partition key 'email' (String)
2. Update the /api/signup route to write to DynamoDB instead of the JSON file
3. Update the /api/signups route to read from DynamoDB
4. Use the AWS SDK v3 for JavaScript
5. Use environment variables for the AWS region
6. Include instructions for setting up IAM permissions"</strong>
</div>

Dupa ce Claude actualizeaza codul, va trebui sa:

1. **Creezi tabelul DynamoDB** in AWS Console:
   - Mergi la DynamoDB > Create table
   - Table name: `waitlist-signups`
   - Partition key: `email` (String)
   - Lasa toate celelalte setari implicite (on-demand capacity)

2. **Configurezi permisiunile IAM** pentru ca Amplify sa acceseze DynamoDB:
   - Mergi la IAM > Roles
   - Gaseste rolul pe care Amplify l-a creat pentru aplicatia ta
   - Adauga politica `AmazonDynamoDBFullAccess`

3. **Adaugi variabilele de mediu** in Amplify:
   - `AWS_REGION`: `us-east-1`

4. **Push si redeploy:**
```
git add .
git commit -m "switch to DynamoDB for production data storage"
git push
```

Amplify va reconstrui si face deploy automat. Dureaza 2-3 minute.

## Testarea aplicatiei live

Parcurge fluxul complet:

1. Viziteaza URL-ul Amplify — vezi pagina de prezentare
2. Trimite un email de test — ar trebui sa reuseasca
3. Viziteaza `/admin` — introdu parola
4. Vezi emailul in dashboard — e stocat in DynamoDB!
5. Incearca exportul CSV — ar trebui sa includa datele live

<div class="pro-tip">
<h4>Pro Tip</h4>
Poti verifica datele in DynamoDB direct: mergi la <strong>DynamoDB > Tables > waitlist-signups > Explore table items</strong>. Vei vedea fiecare email stocat ca o inregistrare in baza de date.
</div>

## Ce ai construit

Ia un moment sa apreciezi ce ai realizat:

- O **pagina de prezentare profesionala** cu colectare de emailuri
- Un **API backend** care valideaza si stocheaza date
- O **baza de date in cloud** (DynamoDB) cu scalare automata
- Un **dashboard de admin** cu grafice si export CSV
- Totul ruland pe **AWS**, accesibil oricui are URL-ul
- Cost lunar total: **0$** (in limitele free tier)

## Ce urmeaza?

Calatoria ta de vibe coding nu se termina aici. Cateva idei:

- **Domeniu personalizat** — Pointeaza propriul domeniu (de ex. waitlistwizard.com) folosind Route 53 si CloudFront
- **Notificari prin email** — Foloseste AWS SES (Simple Email Service) pentru a trimite un email de confirmare la inscriere (3.000 emailuri gratuite/luna)
- **Functionalitati AI** — Foloseste Amazon Bedrock pentru a adauga functionalitati alimentate de AI aplicatiei tale
- **Construieste propria ta idee** — Foloseste exact acelasi flux de lucru pentru a construi orice aplicatie la care ai visat

<div class="honest-note">
<h4>Nota sincera</h4>
Vibe coding-ul cu AI este o superputere autentica, dar are limite. Pe masura ce proiectele tale cresc in complexitate, vei intampina situatii in care AI-ul se chinuie: fluxuri complexe de autentificare, logica de business complicata, optimizarea performantei la scara mare. Fundamentul pe care l-ai construit in acest curs — intelegerea modului in care functioneaza aplicatiile web, cum sa directionezi AI-ul eficient, cum sa depanezi probleme — te va servi indiferent de cat de mult sau cat de putin cod scrii manual.
</div>

## Git Checkpoint final

```
git add .
git commit -m "production deployment with DynamoDB"
git push
```

## Concluzia cheie

Ai inceput acest curs fara experienta in programare. Acum ai o aplicatie live pe AWS pe care ai construit-o avand conversatii cu AI-ul. Nu e o demonstratie de jucarie — e o abilitate reala, si este viitorul dezvoltarii software.

<div class="checkpoint">
<h4>Checkpoint — Curs complet!</h4>
Waitlist Wizard este live pe AWS. Ai trecut de la zero experienta in programare la deploy-ul unei aplicatii full-stack. Tech stack-ul, fluxul de lucru, abilitatile de debugging — sunt ale tale acum. Du-te si construieste ceva extraordinar.
</div>
