[HN Gopher] Show HN: I built a Python web framework
___________________________________________________________________
Show HN: I built a Python web framework
been working on this for nearly a year
Author : zerointensity
Score : 87 points
Date : 2023-09-09 18:47 UTC (4 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| evanharwin wrote:
| Wow I like it, simple like Flask, but with the HTML in the same
| file (as opposed to the jinja templates) which is a pattern I
| really like!
|
| Makes me wonder if you could integrate this ambition to do the
| web-stuff in your Python file with the FastAPI/Pydantic BaseModel
| situation. Like a HTML templating library made out of Python data
| classes (or Pydantic BaseModels).
|
| Either way, I respect the ambition! :) Always cool to see web
| stuff with Python.
| brap wrote:
| I went over the docs and couldn't find anything about state
| management and client/server actions.
|
| I'm guessing this would be similar to LiveView? If so, I'm not
| sure Python will handle the concurrency as well as Elixir...
|
| Edit: I see now that the goal is to compile this to JS, so I'm
| assuming it's going to be quite the opposite of LiveView and will
| do everything on the client?
| lifeisstillgood wrote:
| Fantastic. Any working project brings value to the world.
|
| What did you learn from doing this one?
|
| What makes your framework different?
| forgotpwd16 wrote:
| Would like to see a simple site built on it besides basic
| examples (can even be used as a tutorial to the framework). The
| components seem interesting but feels like will quickly get
| complex.
| nesarkvechnep wrote:
| "modern" and "lightning fast"
| hackan wrote:
| -\\_(tsu)_/-
| lozenge wrote:
| I would say, focus on what makes your web framework different.
|
| i.e. if you want to implement py-to-js, don't also reinvent
| routing at the same time. Grab an existing py-to-js engine and
| make something tiny with it. If it shows the value of the idea,
| then it will be picked up by the wider community.
|
| I like the idea of decorators for turning query and body
| parameters into function parameters, I haven't seen that before,
| however is there a syntax where I can specify many parameters
| without taking many LOC?
|
| For example you could have ``@query("name", "age")`` and look at
| the function signature using the 'inspect' module to determine
| that name should be a str and age an int. Or maybe
| ``@query(name=str, age=int)`` .
|
| Also, mention it uses ASGI in the docs, so people are reassured
| on how to deploy it. And list that it is already compatible with
| uvicorn and etc.
| matsemann wrote:
| The decorator for body params reminds me a bit of Spring's
| @RequestBody annotation.
|
| However, fastapi manages this without a decorator, only a type
| hint. Is there any gain doing it like this?
| earthboundkid wrote:
| [flagged]
| bowsamic wrote:
| In what world is this an appropriate comment?
| th0th wrote:
| I really wonder what that dude was doing when he was 15 years
| old, should have been a difficult childhood...
| bowsamic wrote:
| I get what he's going for I guess but "this isn't much of
| an achievement" is sociopathic
| Retr0id wrote:
| To what does it owe its lightning fast-ness, and how does it
| compare against other frameworks?
|
| Edit: It looks like some of the hot-paths are implemented in C.
| Interesting! (I would recommend pointing this out in the readme)
| ljlolel wrote:
| Like Aaron Swartz's web.py
| warthog wrote:
| I would love something that combines FastAPI's simplicity for
| setup with Django-like completeness and integrations
| ilrwbwrkhv wrote:
| What is missing from the web framework space is a headless ui
| components merged with a db layer. Most of these frameworks
| repeat old patterns. Nothing has been able to break through and
| give us something truly revolutionary like Rails did.
|
| Web frameworks need to be a visual medium where you can create ui
| using visual tools and the "backend" side of things merge
| seamlessly.
| askvictor wrote:
| What do you mean by headless UI components?
| ilrwbwrkhv wrote:
| Basically the ui layer and the backend layer which and the
| operational layer need to be combined into one seamless tool.
| Right now you have the write a "frontend" and a "db
| connection + backend logic layer".
|
| And by headless I mean something which builds on what the web
| provides like buttons but adds a whole lot more of components
| which are used but are unstyled.
| bbkane wrote:
| Sounds a bit like https://directus.io/
| syndicatedjelly wrote:
| > Basically the ui layer and the backend layer which and
| the operational layer need to be combined into one seamless
| tool. Right now you have the write a "frontend" and a "db
| connection + backend logic layer".
|
| Solving this "problem" just doesn't seem like a good use of
| a time. There are now 4738484 different viable ways to
| build a website, adding another way is just a waste of
| everyone's time
| MrLeap wrote:
| Meteor was the last time I heard about something like this.
| zzzeek wrote:
| Then you've invented Visual Basic in the 90s, WordPress in
| the 00s and I don't know Squarespace or something in the
| last decade. For business cases beyond that, this is simply
| not how "the backend" works.
| dvdkon wrote:
| Visual Basic and other "RAD" builders were pretty neat
| and I think platforms like WordPress or Drupal never
| captured their charm. For one, any apps built on them
| need a rather complex runtime, which feels worse to me
| than a language's standard library or the JVM. It's a far
| cry from dragging in a button and then referencing it as
| a variable in code.
|
| Second, the graphical niceties of these platforms often
| run "in-process", and save what is basically code in the
| same database as content. This will anger most Smalltalk
| fans, but I think this style of development is a bad
| idea. I want to know that some folder full of source code
| is _the program_ , and some other folder is _the data_ ,
| and that if I back up one or the other, it will be
| independently usable.
|
| I'm not saying 90s IDEs were perfect, but I don't think
| there's been any successful successor to their style of
| development. Graphical GUI builders exist, but they
| usually don't support making web apps, and after working
| with modern JS GUI frameworks, manually syncing GUI state
| with app state seems antiquated and needlessly bug-prone.
| I suppose QML with Qt Creator comes closest.
| mabcat wrote:
| VB was probably the charmingest language I've ever used,
| especially for GUI. It takes the cake for "rather complex
| runtime" though. As I recall, they bundled the entire VB
| interpreter into every executable. This seemed scandalous
| to me at the time.
| gobdovan wrote:
| maybe streamsync [0] comes close to what you describe?
|
| "Streamsync is an open-source framework for creating data apps.
| Build user interfaces using a visual editor; write the backend
| code in Python." [0] https://github.com/streamsync-
| cloud/streamsync
| rmbyrro wrote:
| Congrats on launching a working product!
|
| What's the rationale behind view.py?
| alrs wrote:
| "modern"
| 29athrowaway wrote:
| Python is great when your goal is to have the highest
| environmental footprint.
| megalord wrote:
| Yeah, because when we implement it in C++ we surely are going
| to save the planet now.
| 29athrowaway wrote:
| Or Julia, or one of the many options you have if the
| community was more open minded.
| phas0ruk wrote:
| Flask is decent. Can't we use that?
| mhd wrote:
| Whatever happened to web2py? I remember that being brought up a
| lot in these discussions...
| blooalien wrote:
| I agree. Flask is quite nice, as are some of the other things
| based off it, like FastAPI, and some of the Flask-inspired
| async frameworks, and the Jinja template engine that Flask
| uses. All good stuff.
| nomdep wrote:
| You can use whatever you want, can't you?
|
| However, my opinion is that is a PITA that every Flask project
| has a different structure, unlike a "batteries included"
| framework like Django, Rails, etc.
| revskill wrote:
| Definition of "modern" ?
| dvektor wrote:
| Are you really 15yrs old?
|
| is the biggest question here..
| frodowtf wrote:
| As a 13 year old, I can confirm that we always mention our age
| before anyone asks.
| forgotpwd16 wrote:
| Have noticed that teens tend to indeed say they're x old on
| stuff they're doing.
| dvektor wrote:
| And he's been working on it for a year. So he built a web
| framework at 14.
|
| And I can't center a div without a google search...
|
| (I am a back-end dev tho, so its a little better than it
| sounds)
| Semiapies wrote:
| Probably safest to avoid people raining hate in them for any
| perceived falling.
| matsemann wrote:
| Can't see they did it here, though. You have to click into
| their profile to see it.
___________________________________________________________________
(page generated 2023-09-09 23:00 UTC)