npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

create-expo-fullstack

v0.1.0

Published

Bootstrap fullstack mobile applications with Expo and your choice of backend framework

Readme

create-expo-fullstack

Bootstrap fullstack mobile applications with Expo and your choice of backend framework.

🚀 Quick Start

npm create expo-fullstack@latest my-app
# or
npx create-expo-fullstack my-app

✨ Features

  • 🎨 Expo for cross-platform mobile development (iOS, Android, Web)
  • Multiple backend options: FastAPI (Python), Express (TypeScript), NestJS (TypeScript)
  • 🐳 Docker Compose for easy development environment
  • 📦 Multiple database options: PostgreSQL, MySQL, MongoDB (optional)
  • 🔐 Authentication options: JWT, OAuth (Google, Apple, GitHub, Facebook), or both (optional)
  • 🧪 Testing setup included for both mobile and backend
  • 🎯 TypeScript & Python type safety out of the box
  • 📝 API documentation auto-generated (Swagger/OpenAPI)
  • 🔄 Hot reload for rapid development
  • 📱 Production-ready project structure

🛠️ Backend Options

FastAPI (Python)

Best for: Machine learning, data science, Python developers

Includes:

  • FastAPI with Uvicorn
  • SQLAlchemy ORM + Alembic migrations
  • Pytest for testing
  • Ruff + mypy for linting and type checking
  • Docker with uv package manager

Express (TypeScript)

Best for: Simple APIs, flexibility, TypeScript developers

Includes:

  • Express with TypeScript
  • Prisma ORM
  • Jest for testing
  • ESLint + Prettier
  • Docker with pnpm

NestJS (TypeScript)

Best for: Enterprise applications, structured architecture

Includes:

  • NestJS framework
  • TypeORM
  • Jest for testing (built-in)
  • ESLint + Prettier
  • Swagger/OpenAPI documentation
  • Docker with pnpm

📋 Prerequisites

  • Node.js 18 or higher
  • Docker (optional but recommended)
  • Git

Backend-specific:

  • Python 3.11+ & uv (for FastAPI)
  • pnpm (for Express/NestJS)

🎯 Usage

Interactive Mode

npm create expo-fullstack@latest

You'll be prompted to configure:

  • Project name
  • Backend framework (FastAPI/Express/NestJS)
  • Database (PostgreSQL or none)
  • Authentication (JWT or none)
  • Bundle identifiers for iOS/Android
  • Port numbers
  • Dependency installation
  • Git initialization

With CLI Arguments

npm create expo-fullstack@latest my-app -- --backend fastapi --db postgres

CLI Options

--backend <framework>      Backend framework (fastapi|express|nestjs)
--db <database>            Database (postgres|mysql|mongodb|none)
--authentication <type>    Authentication (jwt|oauth|both|none)
--oauth-providers <list>   OAuth providers (google,apple,github,facebook)
--no-install              Skip dependency installation
--no-git                  Skip git initialization
--help                    Show help

📁 Generated Project Structure

my-app/
├── mobile/                   # Expo mobile application
│   ├── src/
│   │   ├── api/             # API client
│   │   ├── components/      # Reusable components
│   │   ├── contexts/        # React contexts (Auth, etc.)
│   │   ├── screens/         # App screens
│   │   └── types/           # TypeScript types
│   ├── app.json
│   ├── package.json
│   └── Dockerfile
├── backend/                  # Backend application
│   ├── app/                 # (FastAPI) or src/ (Express/NestJS)
│   │   ├── routes/          # API routes
│   │   ├── models/          # Database models
│   │   └── auth/            # Authentication (if enabled)
│   ├── tests/
│   ├── Dockerfile
│   └── pyproject.toml       # (FastAPI) or package.json
├── docker-compose.yml        # Docker services configuration
├── .env                      # Environment variables
├── .env.example
├── .gitignore
└── README.md

🚀 Development

Using Docker (Recommended)

cd my-app

# Start all services
docker-compose up -d

# View logs
docker-compose logs -f

# Stop services
docker-compose down

Services will be available at:

  • 📱 Mobile app: http://localhost:8081
  • 🔧 Backend API: http://localhost:8080
  • 📚 API Documentation: http://localhost:8080/docs
  • 🗄️ Database Admin (Adminer): http://localhost:8082

Local Development

Backend

FastAPI:

cd backend
uv sync
uv run alembic upgrade head  # If using database
uv run uvicorn app.main:app --reload

Express/NestJS:

cd backend
pnpm install
pnpm prisma migrate dev      # If using database (Express)
pnpm dev

Mobile

cd mobile
yarn install
yarn start

🔐 Authentication

When authentication is enabled, the project includes:

JWT Authentication

  • User registration and login endpoints
  • JWT token generation and validation
  • Password hashing (bcrypt)
  • Protected route decorators/middleware
  • Email/password user model

API Endpoints:

  • POST /auth/register - Register new user
  • POST /auth/login - Login and receive JWT
  • GET /auth/me - Get current user profile
  • POST /auth/logout - Logout

OAuth/Social Authentication

  • Google OAuth 2.0
  • Apple Sign-In
  • GitHub OAuth
  • Facebook Login
  • Automatic user creation/linking
  • Profile picture support

API Endpoints (per provider):

  • GET /auth/{provider} - Initiate OAuth flow
  • GET /auth/{provider}/callback - OAuth callback handler

Mobile

  • AuthContext for state management
  • Secure token storage (Expo SecureStore)
  • Login/Register screens (JWT)
  • OAuth button components
  • WebBrowser-based OAuth flow
  • Protected route navigation

🧪 Testing

Backend

cd backend

# FastAPI
uv run pytest

# Express/NestJS
pnpm test

Mobile

cd mobile
yarn test

🚢 Deployment

Backend Deployment

Recommended platforms:

Steps:

  1. Set environment variables in your platform
  2. Configure database connection
  3. Run migrations
  4. Deploy backend code

Mobile Deployment

For App Stores:

cd mobile

# Build for production
expo build:android
expo build:ios

# Or use EAS Build
eas build --platform all

Update API URL: Set EXPO_PUBLIC_API_BASE_URL to your production backend URL.

📦 What's Included

Mobile (Expo)

  • ✅ Expo SDK (latest)
  • ✅ TypeScript configured
  • ✅ React Navigation setup
  • ✅ API client with Axios
  • ✅ Environment configuration
  • ✅ Testing with Jest
  • ✅ ESLint + Prettier
  • ✅ Auth context (if enabled)

Backend (All)

  • ✅ RESTful API structure
  • ✅ Database ORM configured
  • ✅ Migration system
  • ✅ Testing framework
  • ✅ Linting + formatting
  • ✅ Docker setup
  • ✅ Health check endpoint
  • ✅ CORS configured
  • ✅ Environment validation
  • ✅ API documentation

DevOps

  • ✅ Docker Compose for local development
  • ✅ PostgreSQL container (if enabled)
  • ✅ Adminer for database management
  • ✅ Hot reload for all services
  • ✅ Volume mounts for development
  • ✅ Health checks

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📝 License

MIT

🙏 Acknowledgments

Inspired by:

📖 Documentation

For more detailed documentation, visit our docs (coming soon).

💬 Support

🗺️ Roadmap

  • [x] Add more database options (MySQL, MongoDB)
  • [x] Add OAuth/Social authentication (Google, Apple, GitHub, Facebook)
  • [ ] Add GraphQL option
  • [ ] Add CI/CD templates (GitHub Actions, GitLab CI)
  • [ ] Add monorepo support (Turborepo, Nx)
  • [ ] Add web app template (Next.js)
  • [ ] Add more backend options (Go, Rust)
  • [ ] Add database migration commands to generated projects
  • [ ] Add end-to-end testing setup

Happy coding! 🚀

Made with ❤️ by the create-expo-fullstack team