Skip to content

docusign/1fe-starter-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

1fe Starter App πŸš€

A production-ready template for creating your own 1fe instance. This application serves as both the reference implementation powering demo.1fe.com and as the git template used by create-1fe-app.

🎯 What is this?

This starter app demonstrates how to build a complete 1fe instance using @1fe/server and @1fe/shell. It includes:

  • Examples for live configurations for live configurations, CSP settings, and environment management
  • Two environments: Integration and Production setups
  • Example widgets and plugin integrations

πŸ“‹ Prerequisites

  • Node.js >= 22
  • Yarn (package manager)

πŸš€ Quick Start

1. Using create-1fe-app (Recommended)

npx @1fe/create-1fe-app my-1fe-app
cd my-1fe-app
yarn install
yarn dev

2. Access Your Application by going to http://localhost:3000

πŸ“¦ Project Structure

src/
β”œβ”€β”€ configs/
β”‚   β”œβ”€β”€ ecosystem-configs.ts    # Live configurations
β”‚   β”œβ”€β”€ critical-libs.ts        # Critical library URLs
β”‚   └── env.ts                  # Environment configuration
β”œβ”€β”€ csp-configs.ts              # Content Security Policy settings
β”œβ”€β”€ server.ts                   # Express server setup
β”œβ”€β”€ shell/                      # Shell components and utilities
└── public/                     # Static assets

βš™οΈ Configuration

Environment Variables

Create a .env file based on .env.example:

Variable Description Default
PORT Server port 3001
NODE_ENV Environment mode development
SERVER_BUILD_NUMBER Build identifier local

Live Configurations

Update src/configs/ecosystem-configs.ts to point to your CDN:

export const configManagement: OneFEConfigManagement = {
  widgetVersions: {
    url: 'https://your-cdn.com/configs/widget-versions.json',
  },
  libraryVersions: {
    url: 'https://your-cdn.com/configs/lib-versions.json',
  },
  dynamicConfigs: {
    url: 'https://your-cdn.com/configs/live.json',
  },
  refreshMs: 30 * 1000,
};

CSP Configuration

Modify src/csp-configs.ts to allow your CDN domains:

export const cspConfigs = {
  'script-src': [
    "'self'",
    "'unsafe-inline'",
    'https://your-cdn.com',
    // ... other sources
  ],
  // ... other CSP directives
};

πŸ› οΈ Development Commands

# Start development server (client + server)
yarn dev

# Build for production
yarn build

# Start production server
yarn start

# Run tests
yarn test

# Type checking
yarn typecheck

# Linting
yarn lint

🌍 Deployment

This starter app can be deployed to any platform that supports Node.js applications:

Deploy to Render

Deploy to Render

Deploy to Heroku

Deploy to Heroku

Deploy to Vercel

yarn global add vercel
vercel --prod

Deploy to Railway

yarn global add @railway/cli
railway deploy

Deploy to AWS/Azure/GCP

Follow the respective platform documentation for Node.js applications. The built application is a standard Express.js server.

πŸ”— Widget Integration

Adding New Widgets

  1. Build your widget using 1fe-widget-starter-kit
  2. Deploy widget assets to your CDN
  3. Update widget-versions.json with your widget's information
  4. Configure the widget in your live.json file
  5. Update CSP settings if needed for new domains

Example Widget Configuration

// In your live.json
{
  "widgets": {
    "basePrefix": "https://your-cdn.com/widgets/",
    "configs": [
      {
        "widgetId": "@your-org/your-widget",
        "plugin": {
          "enabled": true,
          "route": "/your-widget"
        }
      }
    ]
  }
}

πŸ”§ Customization

Branding & Styling

  • Update src/shell/components/ for custom layout components
  • Modify CSS variables in your shell styles
  • Replace favicon and other assets in src/public/

Adding Custom Utilities

  • Extend the shell utilities in src/shell/utils/
  • Update the platform props interface
  • Ensure new utilities are available to widgets via the sandbox

Environment-Specific Configuration

  • Create environment-specific config files
  • Use environment variables for sensitive data
  • Set up different CDN endpoints per environment

🀝 Related Projects

πŸ“– Documentation

πŸ› Troubleshooting

Common Issues

CSP Errors: Make sure your CDN domains are added to csp-configs.ts Widget Loading Failures: Verify your live configurations are accessible and valid Build Errors: Ensure all dependencies are installed and Node.js version is >= 22

Getting Help

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Ready to build your 1fe instance? Check out our comprehensive documentation or explore the live demo!

About

A simple 1fe app implementation

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6