{"id":17727641,"url":"https://github.com/tessarin/minima","last_synced_at":"2026-02-09T18:05:47.639Z","repository":{"id":259330406,"uuid":"857901379","full_name":"tessarin/Minima","owner":"tessarin","description":"Efficient web framework build with modern core classes.","archived":false,"fork":false,"pushed_at":"2024-10-23T23:34:36.000Z","size":126,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-24T13:08:02.866Z","etag":null,"topics":["corinna","perl","perlclass","web-framework"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tessarin.png","metadata":{"files":{"readme":"README","changelog":"Changes","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-15T22:31:01.000Z","updated_at":"2024-10-23T23:34:40.000Z","dependencies_parsed_at":"2024-10-24T13:23:36.403Z","dependency_job_id":"2edcd13b-0fc7-4906-a6cb-3beb9b47a193","html_url":"https://github.com/tessarin/Minima","commit_stats":null,"previous_names":["tessarin/minima"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tessarin%2FMinima","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tessarin%2FMinima/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tessarin%2FMinima/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tessarin%2FMinima/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tessarin","download_url":"https://codeload.github.com/tessarin/Minima/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221447493,"owners_count":16823204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["corinna","perl","perlclass","web-framework"],"created_at":"2024-10-25T18:07:06.003Z","updated_at":"2026-02-09T18:05:47.594Z","avatar_url":"https://github.com/tessarin.png","language":"Perl","readme":"NAME\n\n    Minima - Efficient web framework built with modern core classes\n\n\nSYNOPSIS\n\n    app.psgi\n\n        use Minima;\n        Minima::init;\n\n    For a \"hello, world\":\n\n        $ minima run    # or plackup app.psgi, as you prefer\n\n    And that's it, you've got a functional app. To set up routes, edit\n    etc/routes.map:\n\n        GET     /           :Main   home\n        POST    /login      :Login  process_login\n        @       not_found   :Main   not_found\n\n    Controllers:\n\n        class Controller::Main :isa(Minima::Controller);\n\n        method home {\n            $view-\u003eset_template('home');\n            $self-\u003erender($view, { name =\u003e 'world' });\n        }\n\n    Templates:\n\n        %% if name\n        \u003ch1\u003ehello, [% name %]\u003c/h1\u003e\n        %% end\n\n\nDESCRIPTION\n\n    Minima is a framework for PSGI web applications built with Perl's\n    new native object-oriented features (perlclass). It is designed to\n    be simple and minimal, connecting only what is necessary without\n    getting in the way. Consequently, it's lightweight and fast.\n\n    Although designed in a typical MVC fashion, no restrictions are\n    imposed on design patterns. Controller classes have access to Plack\n    request and response objects and can interact with them directly.\n    Minima also provides a class for rendering HTML with ease with\n    Template Toolkit, but you are free to use your own solution.\n\n    To understand the basic principles of how it works, see the\n    following section in this document. For more about the running\n    process, check Minima::App. You may also want to visit\n    Minima::Manual::Customizing to learn how to customize everything\n    according to your needs.\n\n\nHOW IT WORKS\n\n    A typical web application using Minima operates as follows:\n\n    1.  Minima::Setup is loaded. It will read a configuration file (if\n        any, see \"Config File\" in Minima::Setup) and provides a \"init\"\n        subroutine that is passed to Plack as the entry point for\n        receiving requests.\n\n    2.  A Minima::App is created and initialized with the supplied\n        configuration.\n\n    3.  Minima::App passes a routes file (where all application routes\n        are defined) to Minima::Router to be read and parsed.\n\n    4.  The request URL is matched to a route. Minima::App then calls\n        the appropriate controller and method, setting them up and\n        passing along the relevant information such as request and route\n        data.\n\n    5.  The controller handles the necessary logic, calling models (if\n        required) and using views (if desired) to produce content.\n        Content is then assigned to the response and finalized.\n\n\nGETTING STARTED\n\n    To begin a project, the Minima package provides a subroutine\n    (described below) to help you get started with the process mentioned\n    above.\n\n    You can also interact directly with Minima::Setup for full control\n    over the setup process.\n\n  init\n\n    sub init ($config = undef)\n\n    A convenience subroutine that calls Minima::Setup::prepare to\n    prepare the main app object and returns a reference to\n    Minima::Setup::init.\n\n    The optional argument allows you to specify the location of the\n    configuration file.\n\n    For a detailed explanation of behavior and options, refer to the\n    documentation for Minima::Setup.\n\n\nEXAMPLE\n\n    Minima's repository contains an example application under eg/. To\n    run it (from the root of the repository), use:\n\n        $ cd eg\n        $ plackup minima.psgi   # configure plackup or your server as needed\n\n\nMANAGING A PROJECT\n\n    Included with the distribution you'll find a helper program to\n    manage projects. See minima for full details.\n\n    One of its main features is creating a project from scratch, using\n    templates with the recommended structure.\n\n        $ minima new app\n\n\nHISTORY\n\n    While speaking with Paul Evans about the implementation of class in\n    Perl's core, he remarked, \"You should write a blog post about it.\"\n    This led to *Problem #1*: I don't have a blog. Solving that seemed\n    easy enough, but then came *Problem #2*: there wasn't a web\n    framework that used the class feature. Naturally, I decided to\n    tackle *Problem #2* first.\n\n\nSEE ALSO\n\n    perlclass, Minima::App, Minima::Manual::Customizing,\n    Minima::Manual::FAQ.\n\n\nAUTHOR\n\n    Cesar Tessarin, \u003ccesar@tessarin.com.br\u003e.\n\n    Written in September 2024.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftessarin%2Fminima","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftessarin%2Fminima","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftessarin%2Fminima/lists"}