Making project scaffolding easier

Samuel StroscheinSamuel Stroschein
2 min read

Making project scaffolding easier

Making project scaffolding easier

Pedro Martins wrote a comprehensive guide on i18n in TanStack Start where he evaluated Paraglide JS and concluded it wasn't the right fit. After his blog post, we had a conversation where he shared more details:

  • project_id is confusing — "The scaffolding was weird, it creates a project id (that I'm not really sure what is used for?)"
  • Middleware is opaque — "If you want to create new ones it's 'opaque' on how you do it and what's the lifecycle."
  • Monorepo setup unclear — "Not clear how the messages are generated without Vite (in my case was a monorepo)."

This feedback was valuable. Here's what we changed.

No More project_id

The project_id was used for anonymous telemetry and a sync protocol. Both are not needed anymore. Thus, project_id is now gone for unpackaged projects.

 project.inlang/
 ├── settings.json
 ├── cache/
 ├── README.md
-└── project_id
 └── .gitignore

Middleware Documentation

New dedicated docs covering:

  • How middleware works (it's Request -> Response)
  • How to customize and extend middleware
  • Standalone server usage (Elysia, etc. without Vite)

Middleware docs →

Monorepo Guide

Clear documentation for monorepo setups, including how message compilation and watch mode work outside of Vite contexts.

Monorepo docs →

CLI Watch Mode

Paraglide JS's CLI now has a --watch flag for development in monorepos or non-Vite projects.

CLI docs →

Thank You

Open source thrives on honest feedback. Pedro took time to write a detailed blog post and then spent more time explaining his pain points. That kind of engagement is rare.

If you tried Paraglide JS before and decided the scaffolding was weird, give it another try.


Links:

Get notified about new blog posts