Configuration

App Settings

Edit config/app-config.ts for all core settings:

export const APP_NAME = "Your Startup"; export const DOMAIN = "https://yourdomain.com"; export const AWS_REGION = "eu-west-1"; // Email addresses (update these!) export const EMAIL_CONFIG = { supportEmail: 'support@yourdomain.com', billingEmail: 'billing@yourdomain.com', noreplyEmail: 'noreply@yourdomain.com', };

Note: FastAWS automatically uses the correct environment file based on your deployment command:

  • npm run deploy:dev → uses .env.dev
  • npm run deploy:prod → uses .env.prod

You can keep both files in your project simultaneously.

Pricing Plans

Edit your pricing in config/app-config.ts:

const STRIPE_PRICE_IDS = { dev: { SUBSCRIPTION_PLAN_1: "price_your_monthly_id", ONE_TIME_PAYMENT_1: "price_your_lifetime_id", }, prod: { SUBSCRIPTION_PLAN_1: "price_live_monthly_id", ONE_TIME_PAYMENT_1: "price_live_lifetime_id", } };

That's it! The pricing page automatically updates from these IDs.

Email Setup (Optional)

Email is completely optional. Your app works without any email configuration - user signup, authentication, and payments all function normally. When email is not configured, emails are silently skipped (logged to console in dev).

When Email is Configured

FastAWS sends these transactional emails automatically:

  • Welcome Email - When a user signs up
  • Payment Success - After successful payment
  • Payment Failed - When a payment fails
  • Subscription Created - When user starts a subscription
  • Subscription Cancelled - When user cancels
  • Trial Ending - When trial period is about to end

Setting Up Email

Update your email addresses in config/app-config.ts:

export const EMAIL_CONFIG = { supportEmail: 'support@yourdomain.com', billingEmail: 'billing@yourdomain.com', noreplyEmail: 'noreply@yourdomain.com', };

Then choose a provider:

Option 1: AWS SES (Cheapest - $0.10/1000 emails)

  1. Go to SES Console in your deployment region
  2. Click "Verified identities" → "Create identity"
  3. Choose "Domain" and enter your domain (e.g., yourdomain.com)
  4. Add the DNS records SES provides to your domain registrar
  5. Wait for verification (usually 24-72 hours)
  6. Important: Request production access (Account Dashboard → "Request production access") - otherwise you can only send to verified emails

That's it! FastAWS uses SES by default, no additional configuration needed.

Option 2: Resend (Easiest)

  1. Sign up at resend.com
  2. Verify your domain in Resend dashboard
  3. Get your API key
  4. Add to AWS SSM:
aws ssm put-parameter --name "/fastaws/email/resend/api-key-dev" --value "re_xxx" --type "SecureString" aws ssm put-parameter --name "/fastaws/email/resend/api-key-prod" --value "re_xxx" --type "SecureString"
  1. Set environment variable in backend/cdk-stack.ts for your Lambda functions:
EMAIL_PROVIDER: 'resend',

Option 3: Mailgun

Similar to Resend - add API key to SSM and set EMAIL_PROVIDER: 'mailgun'

Testing Emails Locally

In development, emails are logged to console by default. To test actual email sending locally:

  1. Set up SES sandbox (verify your own email as recipient)
  2. Or use Resend (has generous free tier)

Styling

FastAWS uses Tailwind CSS v4 + shadcn/ui.

Quick customization:

  • Colors: Edit CSS variables in frontend/app/globals.css
  • Components: See shadcn/ui docs
  • Favicon: Replace frontend/app/favicon.ico

That's all you need to customize!

Data Modelling

FastAWS uses a single-table DynamoDB design. You can modify this to fit your needs easily using AI.

How to change your data model:

  1. Open your AI coding assistant.
  2. Paste the following prompt:

"I want to modify the DynamoDB schema for my project. I am building a [DESCRIBE YOUR APP, e.g., social media site with posts and photos]. Please design a single-table schema that supports (e.g.):

  1. [Users creation/profiles]
  2. [Creating text posts]
  3. [Uploading photos]
  4. [Commenting on posts]

Tell me the access patterns (PK/SK structures) and what GSI (Global Secondary Indexes) are needed, and then make the necessary changes across the following files to allow the necessary CRUD operations: 'backend/cdk-stack.ts' and new files in 'backend/lambdas/'."