jeffsbox eu
  • go back
  • FMVC

    A fully modular, based on fractal design framework.
  • fractal, modular design
    Each module, regardless of position and importance, shares same, repeating, full MVC structure, which is fully serviced by FMVC delivery engine, so coder does not have to worry about loading and instantiating of used classes. Plus it can have (it is even suggested) a full toolset (libs, resources etc.) it requires to do its job. Such setup allows full self-containment, which leads to real plug(unplug)’n’play versatility without a crippling system. All ‘non-unpluggable’ modules can be protected by “boot_tree” and “boot_lock” mechanisms.
  • structural loose coupling
    Powered by a location slot pull-in engine. An easy way to pull in self-contained, task oriented modules anywhere you want in your project interface without hard-coding. It can be equipped and done via script to simplify and speed up deployment, which translates into savings. It is a bit similar to pattern based functional loose coupling, but much more functional, flexible since patterns are more micro-oriented, while structural loose coupling is more about macro delivery via structure. Having said that, patterns still remain an important element in the FMVC coder toolset, as they can and should be used inside of modules.
  • integrated interface
    fast and server friendly via lazy-load
    Interface is fast as most of the content is loaded via AJAX, when content is requested by the user. No costly preloading. In addition most of the content delivery interface part is rendered by client (jQuery UI dialogs), so it is server resources friendly.
    3D layered
    Interface uses jQuery UI dialogs to display content. jQuery UI dialogs are not your simple popups. They are stackable, draggable, positionable, pinnable and highly flexible in every way necessary. They are adjusted to hold any type of content: paging, images, forms (powered by another plugin allowing auto-serialization) etc. Additionally the dialog interface element is auto-generated - so one click and it is ready for content. Dialogs are seamlessly integrated with other interface elements by specifically designed for this purpose plugin, which offers over a dozen different settings. 3D means that the page loads only necessary content and all of the rest can be loaded in dialogs, without needing to reload a page or load another. Dialogs are stackable in layers. All lazy-loaded of course, with a client generated interface.
    bandwidth friendly, localized action - most functions are built-in or easily attainable
    By localized action I mean that you can POST form and only form will be reloaded and output displayed - process is aided by FMVC and simple to accomplish. Same applies to any other local action, like some other content pull, local paging etc.
    highly stylable
    Main interface template holds location slots, so it can be easily equipped with e.g. Smarty or other templating systems. It uses jQuery UI, so themes can be applied. Dialogs are also extremely styleable - if instead of squares, you want your pops circle-like - no problem. All you need is some css.
  • built-in object delivery system
    All classes are auto loaded and auto-instantiated (controllers, models, libs), so they are always available, where needed - just drop them in the proper folder, without damaging loose-coupling architecture via unnecessary, hardcoded inheritance/instantiation.
  • no abstraction layer
    Nothing between you and PHP/MySQL, so you do not need to worry, if maintainers are up to a task to keep up with PHP/MySQL upgrades.
  • one-click auto-generation of most used interfaces, functional elements etc.
    • auto generation of self contained modules with full MVC filesystem
    • auto generation of controllers and models
    • auto generation of methods
    • codebits: auto generated, targetted, copy and paste code starters (time saving)
    • code templates: auto generated templates for repetitive elements, sporting AJAX powered, lazy-load interface, e.g.:
      • 8 types of paging, which can be easily transformed to image rotator, or content delivery switch etc.
      • methods with codebit support
      • dialog good for:
        • on-demand loaded, AJAX powered forms with lot of codebit support
        • lazy loaded, on-demand content
        • pretty much anything
        • with capacity for easy styling
        • and a bit more
  • optimization and enhanced security via system areas: front, user, admin
    FMVC project structure is divided into 3 areas:
    • front area: standard, front-end unprotected area, where anyone with url/link can enter
    • user area: front end protected user account area
    • admin area: protected back-end system admin area
    Coder does not need to implement any security measures. All he has to do, is to auto-generate module/controller/method in user/admin area and it is automatically password protected. There is more protection offered by system - read on.
  • advanced, multilevel content access protection
    • indiscriminate password protection of entire system areas: front user / back-end admin
    • content access protection:
      • entire pages accessible to users with poper access levels
      • selected page content (module delivered) accessible to users with poper access levels
  • front vortal capable
    Vortal = vertical portal. Own vortal area / specific menus (more can be developed this way).
  • almost flat learning curve for developers
    All they need to know is PHP/MySQL/jQuery - no need to learn FMVC really, since it is interfaced.
  • supports different languages
    Via easy to apply, file held language constants.
  • easy and fast to launch new project - regardless of size
    Launching a new project would be as easy as pulling self-contained modules from the repository (once it saturates) into location slots and doing some styling to meet customer needs. Any custom coded modules will simply add to the repository and you can profit additionally by offering them to existing customers.
  • easy to generate functional content ecosystem for FMVC
    • module written for one customer can be easily used for all of customers using FMVC - since they are self contained (if properly coded), they will fit in other FMVC systems, given customer has need for them:
      • so work paid by one customer can be sold to other customers
      • self-contained modules can make independent developers to pitch-in
      • self-contained modules will allow work to be commissioned from rent-a-coder sites - just send him FMVC as a dev platform and coded module is guaranteed to work in your installation if it worked on coder's
  • more sales friendly
    Every sale can be supported by a demo, a fully functional system for prospective customers. It can be almost one-click deployed, if proper tool script is available, since modules can be pulled from the repository and can fill selected template slots. All you need is some styling and even that can be done via some templating system either purpose built, or external like Smarty.
  • hash deployed - each page/module/method has its own unique hash
    • prevents long urls
    • helps with URL SEO
    • easier operations and deployment of modules
  • Movies

    A few demo movies on youtube.
  • built-in menu maker utility
    Allows to create separate menus for each area: front, admin and user. In the case of the front area, it allows the creation of separate menus for each vortal.
    movie length - 2:17
  • deployment removal
    Deployed module can be un-deployed - if it does not pull any other modules into its body. In general, it is a process of connecting the target page (page/module where deployed module will show), location slot on that page and module itself. Please see the main movie (top) to better understand what deployment is all about.
    movie length - 0:36
  • access control to selected content on page
    Access control to selected areas of the displayed page only. It works in protected areas only (admin, user) - as we need to know who the user is.
    movie length - 1:23
  • location slots
    In order to achieve deployment versatility without hardcoding FMVC uses deployment location slots. Here is a short movie about how to create one and how to use it. Please see the main video to see this manager used in a full module deployment process.
    movie length - 2:08
  • system modules
    FMVC offers a construct called system module. It has nothing to do with "3rd party modules". It is a simple construct allowing for simple tasks to be accomplished. However, even with simple tasks - 3rd are better, as they offer unlimited capacity for further development of a given module.
    movie length - 1:17
  • 3rd party modules
    "3rd Party Modules" name comes from earlier versions, where they were reserved for 3rd party development. Assumption was that 3rd party developers can create a fully functional, detachable, self-contained, plug'n'play module without access to vital system areas - just by using the developer version of FMVC. This approach was so versatile and successful in testing, that it took over the entire "independent building block" concept.
    movie length - 1:35
  • module deployment
    It is a process of connecting target page/module (where selected module will be displayed), location slot (which part of target page module will be displayed and module itself.
    movie length - 1:33
  • project structure - "who pulls whom"
    When you start pulling modules inside of modules and create lots of layers, you can lose control. Project structure tool allows me to regain it. It shows a list of all topmost, standalone pages and downward tree structure "who pulls whom".
    movie length - 0:56
  • auto-generated code template: 3rd party module
    This movie shows how to create a coding environment for standalone, 3rd module based pages. Pulled version creation is shown in the main movie. Creation process differs very little, the end result - quite a lot. Environment created here does some complex job, which otherwise needs to be done by coder, by-hand.
    movie length - 1:30
  • auto-generated code template: 3rd party controller complex
    This template allows a one click creation of a new controller/model/view element within the existing module MVC structure. It is a perfect solution for an additional page within a task manager delivered by module, or additional content pulled into a location slot on one of modules pages, or even some other, external location.
    movie length - 1:30
  • auto-generated code template: 3rd party method
    System can auto-generate methods and register them with the system's registry. There are 2 types (in general): render: for displaying things and action: for processing things. Note: system should always work via controller/model method tandem - access to model method should never be direct (even though it works), but via its controller method companion, also when you need a new method, do not create it directly inside of class, but generate it and paste codebits. It does not take more time really, since as a bonus, the system auto-creates view files and adds corresponding directories (for render method only), creates language files, updates all db tables and adds methods to internal auto-reporting (inheritance, pull-tree etc.). Movie shows the generation of a render method.
    movie length - 1:20
  • auto-generated code template: Main MVC - front area - new controller
    This movie shows how to launch a new controller complex for one of the front vortals. Vortal = vertical portals ... for more read above on this page.
    movie length - 0:48
  • auto-generated paging template: type 1
    A basic, standard, full page ajax powered paging. Obsolete with fully tooled v.5/6/7/8, but still left available.
    movie length - 1:18
  • auto-generated paging template: type 2
    It has a set of tools: sorting and search. However search shows results not by navigating to the searched item on the list, but by opening items results in a dialog pop. Also this type generates a non-index, self-sufficient render method.
    movie length - 1:40
  • auto-generated paging template: type 3
    Paging type 3 is a variation of paging type 2. Only difference is that instead of generating its own render method, it generates a hook, which should be placed into the index method of the main controller.
    movie length - 2:08
  • auto-generated paging template: type 4
    Type 4 paging is a paging with a full toolset located inside of a popup dialog. Results are shown in dialogs.
    movie length - 2:43
  • auto-generated paging template: type 5
    Type 5 is similar to types 2/3 as it also has search and sorting built-in. There are some significant differences though. It is hosted by a dialog popup and it processes non-DB data, e.g. dir structure, delimited file data etc.
    movie length - 2:10
  • auto-generated paging template: type 6
    Type 6 is similar to type 5. It also processes non-DB data, e.g. dir structure, delimited file data etc. Only difference is that it is displayed on a standalone page. It can also be pulled in.
    movie length - 2:16
  • auto-generated paging template: type 7
    Type 7 is similar to type 5 as it also has search and sorting built-in and is hosted by a dialog pop. Only difference is that it processes DB based data.
    movie length - 2:02
  • auto-generated paging template: type 8
    Type 8 is similar to type 6 as it also has search and sorting built-in and is hosted by a page - not dialog. Only difference is that it processes DB based data.
    movie length - 1:52
  • auto-generated code template: dialog generation
    This manager allows a one-click creation of a dialog interface. It also allows additional action methods to be added, if the dialog is meant to host a form. Additionally it provides standard form codebits, auto-serialization plugin, serialized data receiving code in processing method (just copy and paste) etc.
    movie length - 2:07
  • main MVC right tool sidebar demo
    Main MVC manager is the heart of FMVC. It allows codebit auto generation, sets access permissions to a page and more.
    movie length - 2:02
  • create template - full movie
    FMVC: create template - full movie.
    movie length - 14:41
  • Sample page

  • sample live page powered by FMVC
    This framework has never become a live development tool. I simply dabbled in my free time for a few years mostly for fun. I think the whole project started sometime in 2007 and finally went to the attic in 2012. I prepped some documentation and a few movies for anyone brave enough to use it, but I do not remember spending any time promoting it. Despite that a single page was created using this framework. And that site (as of 2022.05.31) is still operational. It was created early in 2014. Owners opted out of responsive design, so accessing it using mobile is not the best of ideas.
  • Download

  • download copy of FMVC
    If you wish, you can dpwnload copy of FMVC. No strings attached. I just do not guarantie it would work without a hiccup in modern PHP environment. It was built for PHP 5. BTW: The names JMVC and FMVC you find in archive are used interchangeably. FMVC: Fractal MVC. JMVC: Jeff's MVC.