Skip to main content

An experimental Full-Stack Framework for Python

Project description

Lemon Logo

Status GitHub Issues GitHub Pull Requests License Downloads


An Experimental Full-Stack Framework For Python. (Still in Development)

📝 Table of Contents

🧐 About

A full-stack framework built with python. The library is shipped with Bootstrap 5 for your styling needs.

Docs: https://sas2k.github.io/Lemon

Discord Server: https://discord.gg/wg239Cpf

Features:

  • UI Library (Development)
  • A full Back-end Capabilities
  • Django style route adding (See examples/django-routing.py)
  • An ORM and migrations feature (check-out -> examples/Lemon-App) (ORM supports strings only for now.)
  • React like syntax
  • middleware api
  • a terminal app to create app [create-lemon-app < app-name >]
  • Component Generator [https://github.com/Sas2k/Lemon-CLI]
  • Reactivity (See examples/reactivity-example)
  • Testing (See examples/Tests.py)
  • Custom Exception Handler (examples/exception-handler.py)
  • Blueprint Routing (examples/Lemon-App)

If you want to have live reloading try uvicorn: https://www.uvicorn.org/

If you don't think this isn't capable to handle anything check this out! -> https://portfolio-sas2k.vercel.app/ | https://github.com/Sas2k/portfolio

🗒 To-Do

Legend:
[x] - checked [*] - doing [ ] - Not Done

  • Form Data Handling
  • API Reference In Docs
  • States

🏁 Getting Started

Docs Are still in Development Try heading over to /examples for some idea. Here is an example below

from Lemon import Component
from Lemon.server import Server

app = Server(static_dir=None) #set the static_dir to none if there is no .css or .js files =The Default Folder for static is public=
Root = Component("Home Page", None, None) #Root component: The component where your other components are rendered: The name inside is the name displayed on the tab, the 2 nones are for css and js file locations

class Home(Component):
    "Home Page Component"
    name = "Home" # Name of the component : REQUIRED
    
    def item(props: dict): #item function where the renderer calls to get your html and other code
        return """
            <h1>Hello World!</h1>
        """

Root.add([Home]) #Add the Home component to the Root component

@app.route("/") #Route decorator
def index(request, response):
    home_page = Root.render("<Home/>") #Note: always use components in Root.render never HTML
    response.text = home_page

app.run() #runs the app

Folder Structure for apps

Here is the folder structure I recommend. (you can create your own structure based on your needs)

App/
    - src/
        - Components/
            - __init__.py
            - components.py
        - Models/
            - __init__.py
            - models.py
        - Routes/
            - __init__.py
            - routes.py
        - Public/
            - css/
                - style.css
            - js/
                - script.js
        - app.py
        - base.py
    - README.md

Installing

To install with,

pip: pip install Lemon-Library

⛏️ Built Using

✍️ Authors

See also the list of contributors who participated in this project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Lemon-Library-1.3.0.tar.gz (12.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page