{"id":16801559,"url":"https://github.com/lonelycode/mojo","last_synced_at":"2026-03-13T01:34:25.338Z","repository":{"id":4841199,"uuid":"5995390","full_name":"lonelycode/Mojo","owner":"lonelycode","description":"Mojo Framework for Tornado Development","archived":false,"fork":false,"pushed_at":"2023-08-26T18:46:18.000Z","size":212,"stargazers_count":31,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-19T21:49:43.215Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"mynewsdesk/flower","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lonelycode.png","metadata":{"files":{"readme":"README.rst","changelog":null,"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":"2012-09-28T09:49:29.000Z","updated_at":"2024-01-07T02:42:03.000Z","dependencies_parsed_at":"2025-02-18T09:33:00.854Z","dependency_job_id":"54db12f8-2f5f-47e6-9015-15e33fd7d46f","html_url":"https://github.com/lonelycode/Mojo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lonelycode/Mojo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonelycode%2FMojo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonelycode%2FMojo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonelycode%2FMojo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonelycode%2FMojo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lonelycode","download_url":"https://codeload.github.com/lonelycode/Mojo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonelycode%2FMojo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30453807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T21:31:01.033Z","status":"ssl_error","status_checked_at":"2026-03-12T21:30:43.161Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-13T09:37:12.016Z","updated_at":"2026-03-13T01:34:25.309Z","avatar_url":"https://github.com/lonelycode.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Mojo v0.1.3 - a framework for Tornado\n=====================================\n\nMojo is a framework that makes it easy and quick to build Tornado projects that scale.\n\n**Some key features of Mojo:**\n\n- A lightweight and flexible ORM that makes developing easy\n- ORM is based off a 'backend' system, enabling you to write your own backend and extend the ORM to other databases without altering your code\n- Authentication and session mixins so you don't need to roll-your-own implementation or third parties\n- Integration with wtForms, with the ability to use your Models as Forms and to populate models from Form data\n- Modular structure so you can add functionality to your project on an app by app basis\n- Prettier debugging output\n- SocketIO support baked in with TornadIO2\n- Project and app-creation templates that make it easy to set up new projects\n\nThe project is heavily influenced by Django, developers familiar with django will find some of the conventions in Mojo\nvery familiar.\n\n*Mojo documentation is available courtesy of ReadTheDocs: http://mojo.readthedocs.org/, all documentation is written\nin Sphinx.*\n\nQuickstart: Using Mojo for the first time\n=========================================\n\nThis is a quick-start tutorial that will get you set up and running with Mojo for the first time.\n\nInstallation\n------------\n\n1. Download the Mojo distribution: https://raw.github.com/lonelycode/Mojo/master/dist/Mojo-0.1.tar.gz\n2. Decompress the zip file\n3. Make sure you have installed the required support packages: ``Tornado``, ``TornadIO2``, ``bcrypt`` and ``wtforms``\n4. From the command line in the new folder run ``python setup.py install``\n\nThis should install Mojo into your python path. However, there is one more step that you may need to do to fully\ntake advantage of Mojo's helper apps, and that is to make ``mojo_manager`` available in your ``PATH``, for linux and Mac OSX users,\nthis can be accomplished by doing something like::\n\n    ln /usr/bin/python2.7/Lib/site-packages/Mojo/mojo_manager.py /usr/sbin/mojo_manager.py\n    chmod +x /usr/sbin/mojo_manager.py\n\nOn windows, adding the Mojo site-packages directory should be enough to give gloabl access to ``mojo_manager``\n\nOnce you've done that, you should be able to test your installation by opeining a python window and typing::\n\n    import Mojo\n\nIf there are no import errors then you shoulod be ready to get started.\n\n*Note:* It is recommended to deploy Mojo in something like virtualenv to ensure you can easily keep it (and your app)\nup to date without affecting your main Python setup and other projects.\n\nYour first project\n------------------\n\nMojo sets up it's projects as a project folder that contains a series of Apps, these apps are independent from one another\nand offer a way to group different functional areas of your app away into discrete units. The typical Mojo project will have a\nfolder structure that looks like::\n\n    --[ProjectName]\n    ----[static]\n    ----[Apps]\n    ------[App 1]\n    --------[templates]\n    --------models.py\n    --------ui_modules.py\n    --------urls.py\n    --------views.py\n    ------[App 2]\n    ------[App 3]\n    ----settings.py\n    ----runserver.py\n\nA quick run down of what each of these files and folders are:\n\n* ``[ProjectName]``: Your projct folder, this houses all the apps, modules settings and server for your tornado project\n* ``[static]``: All your static assets can be placed in here and they will be referenced automatically when you use the ``static_url(\"images/logo.png\")`` built in tornado function\n* ``[Apps]``: Houses all of your individual apps, these break down into a series of base files that make your app work:\n\n  * ``[App 1]/models.py``: This is your model definition file, here you set out what database tables you want to use\n  * ``[App 1]/ui_modules.py``: Your UI Modules for Tornado are housed here, these are automatically loaded so they can be used directly from your templates\n  * ``[App 1]/urls.py``: The URL's for this app, ampping to the relevant Request Handlers\n  * ``[App 1]/views.py``: The request handlers that will manage the various app's functions\n\n* ``settings.py``: All the settings for your application\n* ``runserver.py``: This, strangely enough, runs your web server\n\nTo create your first app, you simply need to invok ethe mojo_manager application,\nthis will create your project folder as follows::\n\n    \u003e mojo_manager.py -p MyNewProject\n    \u003e cd MyNewProject\n    \u003e mojo_manager.py -a HelloWorldApp\n\nThat's it, all the files you need to get started should be created and in nbamed appropriately.\n\nSetup the App\n-------------\n\nTo get started, lets set up your settings.py to get your first server up and running. Open ``settings.py`` in your favourite editor\nand make sure the ``INSTALLED_APPS`` section looks like this::\n\n    INSTALLED_APPS = [\n        'HelloWorldApp',\n    ]\n\nOnce you've made the change, simply save the file and open up your terminal window in the directory where ``runserver.py`` is located, then\ntype the following::\n\n    python runserver.py\n\nYou should see::\n\n    Starting Mojo tornado server.\n    DEBUG:root:Setting up url routers:\n    DEBUG:root:--Added URL's for: blog_app\n    DEBUG:root:--Adding UI Modules for blog_app\n    DEBUG:root:--Added SocketHandler for: blog_app\n    DEBUG:root:Found DATABASE setting - creating session for DB: mojo_blog\n    INFO:root:Starting up tornadio server on port '8001'\n    INFO:root:Entering IOLoop...\n\nIf you navigate to ``http://localhost:8000`` you should see the Mojo welcome page. *Congratulations, you are running Mojo!*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flonelycode%2Fmojo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flonelycode%2Fmojo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flonelycode%2Fmojo/lists"}