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

antilla-react-native-project

v0.1.1

Published

Interactive Expo Router starter generator with NativeWind, theming, permissions, navigation, UI and i18n.

Readme

antilla-react-native-project

Generador interactivo de proyectos Expo listo para publicar como paquete npm. Crea una app con Expo Router y TypeScript estricto, y pregunta qué módulos opcionales se deben incluir.

Uso local

npm install
npm run typecheck
npm test
npm start -- mi-app

Cuando el paquete esté publicado:

npx antilla-react-native-project mi-app

El asistente pregunta por:

  • NativeWind y Prettier con ordenamiento de clases.
  • Paleta semántica centralizada y modo claro, oscuro o del sistema.
  • Control de acceso por roles, permisos y capacidades.
  • Stack, Tabs y Drawer, combinables en una jerarquía de Expo Router.
  • Botón, input y modal genéricos.
  • i18n, códigos de idioma y lenguaje principal.
  • Gestor de paquetes.

Expo Router es la base obligatoria. El resto puede activarse o desactivarse.

Personalizar la plantilla

Los componentes y configuraciones estáticas son archivos normales dentro de template-files/. Por ejemplo, el componente de acceso restringido se edita directamente en:

template-files/access/src/components/access/restricted-access.tsx

No es necesario escapar JSX ni modificar una cadena multilínea. El ensamblador principal está en src/project-files.ts; src/templates/ queda reservado para el cargador y para las plantillas dinámicas cuyo resultado depende de opciones como Tabs, Drawer, permisos o i18n.

Las personalizaciones pequeñas que necesiten interpolar valores siguen disponibles en src/templates/custom-project-files.ts.

El propio paquete está escrito en TypeScript estricto. Consulta MAINTENANCE.md para conocer la arquitectura, cómo añadir opciones y plantillas, las comprobaciones obligatorias y el proceso completo de publicación.

Cada app creada incluye src/features/README.md con una convención sencilla para crear funcionalidades por dominio. Es un buen punto de partida para añadir pantallas, servicios, hooks y componentes sin llenar src/app de lógica de negocio.

La capa de backend también es obligatoria y siempre se genera en src/lib:

  • src/lib/api.ts: instancia Axios, interceptores, ApiError, helpers HTTP, token y challenges de autenticación.
  • src/lib/env.ts: lectura y validación de EXPO_PUBLIC_API_BASE_URL.
  • src/lib/secure-storage.ts: SecureStore en Android/iOS y localStorage en web.
  • .env y .env.example: dominio del backend.

La URL pública se configura así:

EXPO_PUBLIC_API_BASE_URL=http://192.168.1.20:3000/api

En un dispositivo físico no se debe usar localhost para acceder a un backend que corre en la computadora; usa la IP de la red local o un dominio accesible.

Uso automatizado

npx antilla-react-native-project mi-app \
  --name "Mi App" \
  --yes \
  --languages en,es \
  --default-language es

Para generar sin instalar dependencias:

npx antilla-react-native-project mi-app --yes --no-install

Cada módulo admite una opción negativa: --no-nativewind, --no-theme, --no-permissions, --no-stack, --no-tabs, --no-drawer, --no-ui y --no-i18n. Consulta todas las opciones con:

npx antilla-react-native-project --help

Qué genera

Con todas las opciones activas, la navegación queda:

Stack raíz
├── Drawer
│   ├── Tabs
│   │   ├── Inicio
│   │   ├── Explorar
│   │   └── Perfil
│   └── Ajustes
└── Modal de ruta

Las rutas se consumen desde src/navigation/routes.ts. El sistema de acceso está adaptado de los componentes web indicados como referencia: conserva capacidades adicionales, wildcard *, acceso por varios roles, guard de pantalla y wrapper de controles, pero usa un AuthProvider compatible con React Native.

Los diccionarios iniciales completos están disponibles en inglés y español. Si se selecciona otro código, se crea con textos de respaldo en inglés para que el proyecto compile y quede listo para traducir.

Validación y publicación

npm run build
npm run typecheck
npm run check
npm pack --dry-run
npm publish

El paquete requiere Node.js 22.13 o posterior, igual que Expo SDK 57.