6 ms·
Next-generation web framework Teo, supports Node.js, Python and Rust
- alabhyajindal 2y ago[flagged]
- ejstembler 2y ago[flagged]
- lewiscollard 2y agoThe primary author is not a native English speaker; he resides in China. It's more charitable to assume a literal translation that doesn't work well in English than presumptousness.
- ejstembler 2y agoGood point
- est 2y agoLooks like an alternate way of ORM with http handling. Where's the next-gen part?
- ramon156 2y agoWell duh, it's built in Rust!
- alabhyajindal 2y agoJust realized that the OP is also the lead developer. Congrats on launching! I think you can position the product better. The hero text is "Next-generation web framework for Rust, Node.js and Python.". This doesn't convey much to me. Is this a framework that works for all these languages? And most importantly, why would a developer use Teo over native frameworks for each of these languages.
- rrr_oh_man 2y agoYeah, I was confused about this, too.
- victorteo 2y agoThe text is updated on the website. And it's not next-generation anymore.
- lioeters 2y agoPersonally I understood what the phrase "next generation" was supposed to mean, that it's a new and better way of doing things, a new paradigm. But I guess it's a bit overused, like the word "simple", that people have a cynical reaction to it. Anyway, I think the concept is refreshingly clear, it looks like it has a lot of potential. Congrats on launching! Nit: I'd change "Working in progress" to "Work in progress", it's more common to see the latter wording.
- victorteo 2y agoThanks! I update it.
- victorteo 2y agoThanks! I will update the hero text.
- holoduke 2y ago[flagged]
- deleted 2y ago[deleted]
- the_duke 2y agoSome interesting ideas here, but urgh, the Rust examples... that is really not things should work... It seems to work by registering callbacks into a context by name, eschewing any sensible typing relation with the schema. I assume the scaffolding code would lead to panics at startup, or worse, on invocation. The way to do this would be generating traits and have the user implement the trait.
- deleted 2y ago[deleted]
- victorteo 2y agoThat makes sense. I fill fix panics and take this consideration into the next major version.
- hliyan 2y agoTitle could have read "Schema-driven web server framework for Rust, Node & Python". Idea has merit -- much of the implementation is in the schema and therefore language agnostic. And you can choose from three languages. Using "next generation" or "modern" is now a signal (at least to people like myself), that something is just a reimplementation of an old idea with new syntax.
- tkzed49 2y agoI agree, my connotation of "web framework" is that it competes with Next.js or Remix or something. This seems like a schema-driven ORM a la Prisma, plus API layer. In other words, you could conceivably use it alongside a "web framework". I would lean in on the unified schema aspect, I think that distinguishes it from a lot of web-focused ORMs. It actually feels like it could be compared against GraphQL given the schema and API features. Of course, that leads me to wonder about the hairy stuff: permissions, rate limiting, schema evolution, etc.
- victorteo 2y agoHi @tkzed49, Teo supports custom route handlers and routing middlewares. Teo is a web framework with a builtin ORM. There are builtin permissions, too. You can use it or implement your own. Teo supports database auto migration.
- loveparade 2y agoI like the idea and it's not specific to web development. So many times in my career I've wanted to share a schema and data types of an application across languages that need to communicate with each other. For example, a C script that generates JSON data to be read in a Python notebook into the same data types. I'm aware that serialization frameworks like protocol buffers do this, but they usually come with a whole lot of other baggage, dependencies, hit-or-miss language support, and clunky APIs. I want something more lightweight that allows me to start developing an application by developing its schema, without it being tied to a specific serialization framework or language implementation.
- 2y ago
- e-clinton 2y agoLooks interesting, will check it out. Does this have auth built in as well? RLS? I love any tool that speeds up small projects.
- victorteo 2y agoHi @e-clinton, it does have auth builtin.
- librasteve 2y agopersonally, I prefer the style of raku Red ORM https://raku.land/zef:FCO/Red https://raku.land/zef:FCO/Red use Red:api<2>; model User is rw { has Int $.id is serial; has Str $.name is column; has Str $.email is column{ :unique }; has Str $.password is column{ :nullable } is rw; has DateTime $.created-at is column .= now; has DateTime $.updated-at is column .= now; } my $*RED-DB = database "SQLite"; User.^create-table;
- deleted 2y ago[deleted]
- red_admiral 2y agoAs someone who worked with Groovy/Grails when it came out (because Ruby on Rails was hot and the JVM wanted in too) - this looks neat, but "next generation" made me chuckle.
- deleted 2y ago[deleted]
- victorteo 2y agoI will remove the "next-generation" thing.
- kriiuuu 2y agoLooks exactly like smithy?
- victorteo 2y agoWell, I just looked at Smithy. And they quite differ. Teo is just an HTTP framework like fastify, express, koa, flask and fastapi. It has a schema language and a builtin ORM, which make it quite similar to GraphQL and Prisma.
- BiteCode_dev 2y agoDo you target big projects with heterogeneoud team ? Is that the problem it's trying to solve?
- victorteo 2y agoBoth big projects and small projects are targeted. It doesn't sacrifice functionality while provides speed up.
- rrgok 2y agoLooks interesting. One suggestion, don't make data validation and authnz an after thought. Something I'm missing from all these automatic API generation frameworks from schema is having different complex data validation rules for creating, updating and eventually deleting. It is nice to put simple data type constraints on fields, but is infinitely more useful to have a DSL that can express complex logic: field X cannot be Z when field Y and W have value V and U respectively. Or when mass inserting/updating validating that the aggregate of input field Z is greater than X or the aggregate is not already in DB. Same thing for relationship. Laravel validation rules is the closest that comes to this kind of input validation, but Laravel doesn't provide automatic API generation.
- victorteo 2y agoHi @rrgok, Teo supports builtin and extendable data validation and authentication rules. The feature is called pipeline. It supports very complicated type inference. See this: https://docs.teodev.io/concepts/components/teo-schema/pipeline https://docs.teodev.io/concepts/components/teo-schema/pipeli...
- Terretta 2y agoThis is fantastic. At the same time, there's an ecosystem beyond just the web framework, where rapid iteration is helping a developer write once but leverage multiple tools. For instance: - FastAPI - Starlette - pydantic - sqlmodel - postgres Here's an example discussion for building the full stack yourself: https://medium.com/@lawsontaylor/the-ultimate-fastapi-project-setup-fastapi-async-postgres-sqlmodel-pytest-and-docker-ed0c6afea11b https://medium.com/@lawsontaylor/the-ultimate-fastapi-projec... The value comes from the sort of community-agreed data model: Why: https://docs.pydantic.dev/latest/why/ https://docs.pydantic.dev/latest/why/ Datamodel code gen: https://docs.pydantic.dev/latest/integrations/datamodel_code_generator/ https://docs.pydantic.dev/latest/integrations/datamodel_code... With this at the core, then API contract, doc, DB, test, and SDK generation are at hand, not to mention easier integration with all of these other projects. And now with Observability: https://pydantic.dev/logfire https://pydantic.dev/logfire I find no hits on the terms `pydantic` or `openapi` in your docs. Given your choice to include Python as one of the three supported languages, do you have a plan to tie into Pydantic or implement a bridge?
- prng2021 2y agoLooks very promising, congrats! I would remove the claim on the “Why Teo?” doc page that claims Teo is “Bug Free”. That’s an outrageous and impossible to achieve claim that turns people off.
- meiraleal 2y agoA web framework that supports 3 different languages/runtimes is quite nextgen for me! Better than calling a framework integrated with LLM next gen. Congrats on launching.