<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Emmanuel Buah-Kwofie</title>
    <description>The latest articles on DEV Community by Emmanuel Buah-Kwofie (@emmanuel_buahkwofie_20f3).</description>
    <link>https://dev.to/emmanuel_buahkwofie_20f3</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3120340%2F5e1d0ba0-edea-448c-b3a6-69b762069fb2.jpg</url>
      <title>DEV Community: Emmanuel Buah-Kwofie</title>
      <link>https://dev.to/emmanuel_buahkwofie_20f3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emmanuel_buahkwofie_20f3"/>
    <language>en</language>
    <item>
      <title>Why Use Flask-Nova: Modern APIs on Top of Vanilla Flask</title>
      <dc:creator>Emmanuel Buah-Kwofie</dc:creator>
      <pubDate>Fri, 25 Jul 2025 10:35:57 +0000</pubDate>
      <link>https://dev.to/emmanuel_buahkwofie_20f3/why-use-flask-nova-modern-apis-on-top-of-vanilla-flask-dff</link>
      <guid>https://dev.to/emmanuel_buahkwofie_20f3/why-use-flask-nova-modern-apis-on-top-of-vanilla-flask-dff</guid>
      <description>&lt;p&gt;If you love Flask but wish it had type hints, automatic OpenAPI docs, dependency injection, and better DX — &lt;a href="https://pypi.org/project/flask-nova/" rel="noopener noreferrer"&gt;Flask-Nova&lt;/a&gt; is for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem with Vanilla Flask&lt;/strong&gt;&lt;br&gt;
Let’s say you want to build a simple JSON API with Flask. You’d probably write something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/greet", methods=["POST"])
def greet():
    data = request.get_json()
    name = data.get("name")
    return jsonify({"message": f"Hello, {name}!"})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works. But now imagine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want to validate the request data.&lt;/li&gt;
&lt;li&gt;You want OpenAPI docs for your frontend team.&lt;/li&gt;
&lt;li&gt;You want typed parameters from the URL or query.&lt;/li&gt;
&lt;li&gt;You want better error handling and testing.&lt;/li&gt;
&lt;li&gt;You want some structure, without rewriting everything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Soon, your simple app becomes a tangle of decorators, manual checks, and custom logic. And if you want more modern tooling like FastAPI offers, you're suddenly looking at &lt;strong&gt;rebuilding everything using ASGI&lt;/strong&gt; and leaving behind the familiar Flask ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pypi.org/project/flask-nova/" rel="noopener noreferrer"&gt;Flask-Nova&lt;/a&gt; is a modern framework built on top of Flask. It brings typed routing, OpenAPI generation, dependency injection, and other developer-friendly features — all while keeping your app fully compatible with the Flask and WSGI world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it gives you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typed route parameters&lt;/li&gt;
&lt;li&gt;Automatic Swagger / OpenAPI docs&lt;/li&gt;
&lt;li&gt;Dependency injection via Depend()&lt;/li&gt;
&lt;li&gt;Clean logging and built-in exception handling&lt;/li&gt;
&lt;li&gt;Works with dataclass, pydantic, or plain classes&lt;/li&gt;
&lt;li&gt;No ASGI, no Starlette — just Flask&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Not Just Use FastAPI?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;FastAPI is amazing. But Flask-Nova isn’t trying to replace it.&lt;br&gt;
Instead, Flask-Nova is for developers who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Still &lt;strong&gt;prefer Flask&lt;/strong&gt; or are maintaining existing Flask apps&lt;/li&gt;
&lt;li&gt;Want &lt;strong&gt;FastAPI-like features&lt;/strong&gt; but without switching to ASGI&lt;/li&gt;
&lt;li&gt;Need something &lt;strong&gt;lightweight, sync-friendly, and deployable anywhere&lt;/strong&gt; (including platforms where ASGI isn’t easy to run)
It’s like giving your old Flask app a supercharged dev experience without a full rewrite.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A Taste of Flask-Nova&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_nova import FlaskNova
from pydantic import BaseModel

app = FlaskNova(__name__)

class GreetRequest(BaseModel):
    name: str

@app.post("/greet")
def greet(data: GreetRequest):
    """Greet someone
    ---
    Returns a personalized greeting message.
    """
    return {"message": f"Hello, {data.name}!"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Your request is validated.&lt;/li&gt;
&lt;li&gt;Your route is typed.&lt;/li&gt;
&lt;li&gt;Your docstring becomes OpenAPI docs (auto-generated).&lt;/li&gt;
&lt;li&gt;Swagger UI is available at /docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All this, without leaving Flask.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built-in Tools That Matter&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Dependency Injection&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_nova import Depend

def get_user():
    return {"id": 1, "name": "Alice"}

@app.get("/me")
def me(user=Depend(get_user)):
    return {"user": user}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;OpenAPI from Docstrings&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"""Get current time
---
description: Returns the current UTC time.
responses:
  200:
    description: Current time in ISO format.
"""
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When Should You Use Flask-Nova?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use Flask-Nova if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You like Flask and don’t want to switch to FastAPI&lt;/li&gt;
&lt;li&gt;You want a modern dev experience in a WSGI-compatible setup&lt;/li&gt;
&lt;li&gt;You’re building APIs, microservices, or internal tools with Python&lt;/li&gt;
&lt;li&gt;You want clean, typed code and real documentation — without the hassle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Try It Now&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/treasuremani/flask-nova" rel="noopener noreferrer"&gt;https://github.com/treasuremani/flask-nova&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Pypi&lt;/strong&gt;: &lt;a href="https://pypi.org/project/flask-nova/" rel="noopener noreferrer"&gt;https://pypi.org/project/flask-nova/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Quickstart Docs&lt;/strong&gt;: Coming soon!&lt;/p&gt;

&lt;p&gt;Flask-Nova isn’t trying to compete with FastAPI — it’s for developers who want to stay in the Flask world while still enjoying modern Python features.&lt;/p&gt;

&lt;p&gt;If that sounds like you, give it a try. Drop a star, ask a question, or submit feedback. Let’s build clean, modern APIs — the Flask way.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>flask</category>
      <category>api</category>
      <category>openapi</category>
    </item>
    <item>
      <title>Introducing Flask-Nova: Zero-Boilerplate APIs with Docs &amp; Type Safety</title>
      <dc:creator>Emmanuel Buah-Kwofie</dc:creator>
      <pubDate>Wed, 23 Jul 2025 08:23:22 +0000</pubDate>
      <link>https://dev.to/emmanuel_buahkwofie_20f3/introducing-flask-nova-zero-boilerplate-apis-with-docs-type-safety-47d0</link>
      <guid>https://dev.to/emmanuel_buahkwofie_20f3/introducing-flask-nova-zero-boilerplate-apis-with-docs-type-safety-47d0</guid>
      <description>&lt;p&gt;Flask is celebrated for its simplicity and flexibility, but let's be honest, building a modern API with features like authentication, validation, and comprehensive documentation often becomes a repetitive chore.&lt;/p&gt;

&lt;p&gt;That's why I created &lt;strong&gt;Flask-Nova—&lt;/strong&gt;a modern extension for Flask designed to accelerate API development. It comes with &lt;strong&gt;automatic OpenAPI documentation&lt;/strong&gt; and &lt;strong&gt;type-safe input models&lt;/strong&gt; built right in, so you can focus on what matters: your application's logic.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;PyPI&lt;/strong&gt;: &lt;a href="https://pypi.org/project/flask-nova/" rel="noopener noreferrer"&gt;https://pypi.org/project/flask-nova/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💻 &lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/manitreasure1/flasknova" rel="noopener noreferrer"&gt;https://github.com/manitreasure1/flasknova&lt;/a&gt;&lt;br&gt;&lt;br&gt;
📘 &lt;strong&gt;Example App&lt;/strong&gt;: &lt;a href="https://github.com/manitreasure1/flask-nova-tutorials" rel="noopener noreferrer"&gt;https://github.com/manitreasure1/flask-nova-tutorials&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔥 Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Auto-generated Swagger docs (&lt;code&gt;/docs&lt;/code&gt;): Get interactive API documentation, &lt;strong&gt;enabled with a single line of code and easily customizable&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Typed route inputs&lt;/strong&gt; using Pydantic-style models: Ensure data integrity with clear, concise type hints.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Decorator-based routing&lt;/strong&gt; with zero boilerplate: Define your routes cleanly and efficiently.&lt;/li&gt;
&lt;li&gt;✅ Built-in HTTPException for &lt;strong&gt;clean error handling&lt;/strong&gt;: Manage API errors gracefully.&lt;/li&gt;
&lt;li&gt;✅ &lt;code&gt;status&lt;/code&gt; helpers (e.g., &lt;code&gt;status.CREATED&lt;/code&gt;): Use semantic HTTP status codes easily.&lt;/li&gt;
&lt;li&gt;✅ &lt;code&gt;Depend()&lt;/code&gt; for clean dependency injection: Organize your code with reusable components.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Extensible and Pythonic design&lt;/strong&gt;: Enjoy a familiar and flexible development experience.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Compatible with native Flask&lt;/strong&gt;: Seamlessly integrate with your existing Flask projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🚀 Installation&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;pip install flask-nova&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Examples&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Basic Route with Type-Safe Input&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;This example shows how to define a route that automatically validates incoming request data based on a Pydantic-style model.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_nova import FlakNova, NovaBlueprint
app = FlaskNova(__name__)
route = NovaBlueprint("dev",__name__)
class RegisterData(RequestModel):
    username: str
    email: str
@route.post("/register")
def register(data: RegisterData):
    return {"msg": "User registered", "data": data.model_dump()}

# Register the blueprint (assuming 'app' is your FlaskNova instance)
app.register_blueprint(route)

# To run this minimal example:
# if __name__ == "__main__":
#     app.run(debug=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This endpoint automatically validates the incoming request, and its JSON schema is included in the auto-generated API documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dependecy Injection&lt;/strong&gt;&lt;br&gt;
Leverage &lt;code&gt;Depend()&lt;/code&gt; to inject dependencies into your route functions, making your code modular and testable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_nova import Depend,FlaskNova NovaBlueprint

app = FlaskNova(__name__) # Use Flask for the base app
route = NovaBlueprint("dev", __name__)

def get_current_user():
    # In a real app, this would fetch the authenticated user
    return {"id": 1, "username": "admin"}

@route.get("/me")
def me(user=Depend(get_current_user)):
    return {"user": user}

# Register the blueprint
app.register_blueprint(route)

# if __name__ == "__main__":
#     app.run(debug=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Route Metadata: Summary, Description, and Response Model&lt;/strong&gt;&lt;br&gt;
Enhance your API documentation by adding a &lt;code&gt;summary&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;response_model&lt;/code&gt;, and &lt;code&gt;tags&lt;/code&gt; to your routes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_nova import FlaskNova NovaBlueprint
from pydantic import BaseModel

app = FlaskNova(__name__) 
auth_bp = NovaBlueprint("auth", __name__)

class LoginInput(BaseModel):
    username: str
    password: str

class LoginOut(BaseModel):
    access_token: str
    refresh_token: str

@auth_bp.route(
    "/login",
    methods=["POST"],
    summary="Login user",
    description="Authenticate user and return JWT access and refresh tokens.",
    response_model=LoginOut,
    tags=["Auth"]
)
def login(data: LoginInput):
    # In a real application, this would handle user authentication
    return {"access_token": "abc.123.xyz", "refresh_token": "def.456.uvw"}

# Register the blueprint
app.register_blueprint(auth_bp)

# if __name__ == "__main__":
#     app.run(debug=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Error Handling with&lt;/strong&gt; &lt;code&gt;HTTPException&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;code&gt;status&lt;/code&gt; &lt;strong&gt;Helpers&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_nova import route, FlaskNova, NovaBlueprint, HTTPException, status

app = FlaskNova(__name__)
api = NovaBlueprint("api", __name__)

items = {
    1: {"id": 1, "name": "Item One"},
    2: {"id": 2, "name": "Item Two"}
}

@api.route("/items/&amp;lt;int:item_id&amp;gt;", methods=["GET"])
def get_item(item_id: int):
    item = items.get(item_id)
    if not item:
        raise HTTPException(
            status_code=status.NOT_FOUND,
            detail=f"Item {item_id} not found",
            title="Not Found"
        )
    return item

@api.route("/items", methods=["POST"])
def create_item():
    new_id = max(items.keys()) + 1
    item = {"id": new_id, "name": f"Item {new_id}"}
    items[new_id] = item
    return item, status.CREATED

app.register_blueprint(api)

# if __name__ == "__main__":
#     app.run(debug=True)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Common status Codes&lt;/strong&gt;&lt;br&gt;
Flask-Nova includes a &lt;code&gt;status&lt;/code&gt; module for easy access to common HTTP status codes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_nova import status

print(status.OK)                  # 200
print(status.CREATED)             # 201
print(status.NO_CONTENT)          # 204
print(status.BAD_REQUEST)         # 400
print(status.UNAUTHORIZED)        # 401
print(status.FORBIDDEN)           # 403
print(status.NOT_FOUND)           # 404
print(status.CONFLICT)            # 409
print(status.UNPROCESSABLE_ENTITY)# 422
print(status.INTERNAL_SERVER_ERROR) # 500
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Built-in logging&lt;/strong&gt;&lt;br&gt;
Flask-Nova integrates a simple, colorful logging system for better development feedback.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_nova import get_flasknova_logger
log = get_flasknova_logger()
#or simply: from flask_nova import logger
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ This endpoint is automatically validated&lt;/li&gt;
&lt;li&gt;✅ JSON schema is included in the docs&lt;/li&gt;
&lt;li&gt;✅ Swagger UI available at &lt;code&gt;/docs&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Flask-Nova?&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;As a Flask developer, I deeply appreciate its flexibility. However, I consistently found myself repeating the same setup tasks across every project:&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manually parsing request data.&lt;/li&gt;
&lt;li&gt;Writing input validators from scratch.&lt;/li&gt;
&lt;li&gt;Setting up Swagger UI.&lt;/li&gt;
&lt;li&gt;Implementing JWT authentication logic.&lt;/li&gt;
&lt;li&gt;Documenting routes by hand.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I built Flask-Nova to eliminate this friction. Now, I can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focus on writing real features&lt;/li&gt;
&lt;li&gt;Get fully-documented APIs out of the box&lt;/li&gt;
&lt;li&gt;Maintain a Pythonic and type-safe codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Configuration Tips&lt;/strong&gt;&lt;br&gt;
Flask-Nova allows easy customization of your API environment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enable and Customize Swagger UI&lt;/strong&gt;&lt;br&gt;
To make your API documentation available at &lt;code&gt;/docs&lt;/code&gt; (or a custom route), you need to call &lt;code&gt;app.setup_swagger()&lt;/code&gt;. This method also allows you to customize the API's title, description, version, and other important metadata.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if __name__ == '__main__':
    app.setup_swagger(info={
        "title": "FlaskNova API test",
        "version": "1.2.3",
        "description": "Beautiful API for modern apps.",
        "termsOfService": "https://example.com/terms",
        "contact": {
            "name": "Team FlaskNova",
            "url": "https://github.com/flasknova",
            "email": "support@flasknova.dev"
        },
        "license": {
            "name": "MIT",
            "url": "https://opensource.org/licenses/MIT"
        }
    })
    # app.run(debug=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Change Swagger UI Route&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;By default, your API documentation is served at &lt;code&gt;/docs&lt;/code&gt;. You can change this by setting the following environment variable:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;FLASKNOVA_SWAGGER_ROUTE=/api-docs&lt;/code&gt;&lt;br&gt;
Now your docs will be available at &lt;code&gt;/api-docs&lt;/code&gt; instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disable Docs in Production&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;To prevent exposing internal documentation in production, simply disable the Swagger UI with:&lt;/em&gt;&lt;br&gt;
&lt;code&gt;FLASKNOVA_SWAGGER_ENABLED=False&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This will hide the auto-generated docs while keeping your API fully functional.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧪 Example App&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;If you want to see Flask-Nova in action, check out this simple example app repository:&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;👉 Flask-Nova Example App on GitHub&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/manitreasure1/flask-nova-tutorials.git" rel="noopener noreferrer"&gt;https://github.com/manitreasure1/flask-nova-tutorials.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🙏 Feedback &amp;amp; Contributions Welcome&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Flask-Nova is an open-source passion project, and I'd love your help to make it even better!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Like the idea&lt;/strong&gt; → Please ⭐ the GitHub repo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Found a bug&lt;/strong&gt; → Open an issue&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Have an idea&lt;/strong&gt; → Let's discuss!
Want to contribute → Pull Requests are always welcome!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/manitreasure1/flasknova" rel="noopener noreferrer"&gt;https://github.com/manitreasure1/flasknova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PyPI: &lt;a href="https://pypi.org/project/flask-nova/" rel="noopener noreferrer"&gt;https://pypi.org/project/flask-nova/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>flask</category>
      <category>webdev</category>
      <category>api</category>
    </item>
  </channel>
</rss>
