# Rise Examples
This directory contains example applications demonstrating various Rise features and deployment patterns.
## Examples
### Hello World Examples
Simple static and dynamic applications to get started with Rise.
- **[hello-world](./hello-world/)** - Static HTML page served with nginx
- **[hello-world-js](./hello-world-js/)** - Node.js Express application
- **[hello-world-py](./hello-world-py/)** - Python Flask application
### OAuth Examples
Demonstrate the OAuth 2.0 extension for end-user authentication.
- **[oauth-pkce-flow](./oauth-pkce-flow/)** - PKCE OAuth flow for SPAs
- Uses PKCE (Proof Key for Code Exchange) for enhanced security
- Best for: React, Vue, Angular, vanilla JavaScript
- Security: No client secrets needed, prevents code interception
- Stack: nginx serving static HTML/JS (port 8080)
- **[oauth-exchange-flow](./oauth-exchange-flow/)** - RFC 6749-compliant token endpoint flow for backend apps
- Authorization code exchanged server-side via `/token` endpoint
- Best for: Rails, Django, Express, server-rendered apps
- Security: HttpOnly cookies, XSS-safe, tokens never exposed to browser
- Stack: Node.js/Express (port 8080)
## Quick Start
Each example includes its own README with detailed setup instructions.
### General Steps
1. **Start local development environment**:
```bash
docker-compose up -d
```
2. **Login to Rise**:
```bash
rise login
```
3. **Create a project** (if needed):
```bash
rise project create <project-name>
```
4. **Deploy the example**:
```bash
cd example/<example-name>
rise deployment create <project-name>
```
## OAuth Examples Setup
The OAuth examples require additional setup to create the OAuth extension:
1. **Create the OAuth extension**:
```bash
ENCRYPTED=$(rise encrypt "rise-backend-secret")
rise extension create oauth-demo oauth-dex \
--type oauth \
--spec '{
"provider_name": "Dex (Local Dev)",
"description": "Local Dex OIDC provider for development",
"client_id": "rise-backend",
"client_secret_encrypted": "'"$ENCRYPTED"'",
"authorization_endpoint": "http://localhost:5556/dex/auth",
"token_endpoint": "http://localhost:5556/dex/token",
"scopes": ["openid", "email", "profile"]
}'
```
2. **Restart Dex** (callback URLs already configured):
```bash
docker-compose restart dex
```
3. **Deploy the example**:
```bash
cd example/oauth-pkce-flow rise deployment create oauth-demo
```
4. **Test locally** (optional):
- PKCE flow: `rise deployment create oauth-demo` and visit the deployed URL
- Exchange flow: Run `npm install && npm start` and visit `http://localhost:8080`
## Default Dex Credentials
For local development with Dex:
- **Email**: `admin@example.com` / `dev@example.com` / `user@example.com`
- **Password**: `password`
## Documentation
For more details on Rise features, see the main documentation:
- [OAuth Extension](../docs/oauth.md)
- [Build Backends](../docs/builds.md)
- [Deployments](../docs/deployments.md)
- [Configuration](../docs/configuration.md)
## Contributing
When adding new examples:
1. Create a new directory under `example/`
2. Include a README with setup instructions
3. Add entry to this README
4. Keep examples minimal and focused on one feature