{"id":13395039,"url":"https://github.com/rsms/oui","last_synced_at":"2025-03-22T10:31:18.235Z","repository":{"id":766993,"uuid":"447669","full_name":"rsms/oui","owner":"rsms","description":"Web-app client-server framework developed as part of dropular.net","archived":false,"fork":false,"pushed_at":"2010-08-06T01:36:25.000Z","size":454,"stargazers_count":50,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-15T21:17:06.098Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://dropular.net/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rsms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2009-12-24T00:52:14.000Z","updated_at":"2023-11-09T16:00:39.000Z","dependencies_parsed_at":"2022-08-16T10:50:16.330Z","dependency_job_id":null,"html_url":"https://github.com/rsms/oui","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsms%2Foui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsms%2Foui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsms%2Foui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsms%2Foui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rsms","download_url":"https://codeload.github.com/rsms/oui/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244943742,"owners_count":20536290,"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":[],"created_at":"2024-07-30T17:01:40.052Z","updated_at":"2025-03-22T10:31:17.905Z","avatar_url":"https://github.com/rsms.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# oui\n\nOui is a kit and framework for building larger websites, in the same fashion as networked and distributed desktop applications.\n\n- All code is modern JavaScript -- [Node.js](http://nodejs.org/) for the server and in the browser at the client side.\n- The user interface is completely handled client-side\n- Client-server communication is REST-ful and exchange structured data (JSON)\n- All JavaScript, HTML and CSS is namespaced (derived from file structure)\n\nNormally this is how rich HTML clients are designed:\n\n\u003cimg src=\"http://farm5.static.flickr.com/4094/4864279501_3db3e57d06_o.png\"\u003e\n\nThis quickly gets messy with large sites and you often end up splitting up content into multiple actual requests simply because there's no better way to structure your source.\n\nNow, Oui takes another approach by letting you structure your content regarding to *modules* rather than *technology*:\n\n\u003cimg src=\"http://farm5.static.flickr.com/4082/4864279573_305cc9499d_o.png\"\u003e\n\nAs soon as any content is modified, an active processor and compiler automatically updates the three final index files -- web browsers get what they want (few requests, optimized structure, etc) and you can structure your work in a logical way (by logical units/modules rather than scattered around in large files).\n\n## Features\n\nThe server keeps no persistent state, thus allowing for scalability:\n\n- If a server instance dies, nothing can break since there is no finalization process nor any state which can break.\n- Secure session support\n  - Sessions are transient but buffered in memory for each server instance.\n  - Persistent session data is created and updated by user-defined hooks.\n  - Authentication tokens cached in sessions and can be wrapped in user-defined\n    types (prototypes).\n- Multi-site support\n  - Clients connect to different server instances (e.g. host1.server.com:81, host4.server.com:80, etc)\n  - Which server instance to connect to is chosen by random (with some weightening) for \"new\" clients\n  - Clients \"stick with\" a server instance as long as the server does not reply with a 5xx response (in which case the client selects a new server using round-robin).\n  - When a server instance fails (crashes) the client will automatically connect to a new backend and re-send the request (which caused the detection of a faulty server).\n    - Requests should be transactional and such design is supported by the oui server.\n- Built-in authentication\n  - Challenge-response with intermediate, cacheable representation\n  - User-defineable hooks (both on the server and the client side)\n  - Support for custom authentication schemes (e.g. plain text, oath, etc)\n  - Sensible defaults (ready out-of-the-box), requiring virtually no programming effort, get you started quickly\n\n\nInitially developed as part of the 2010 version of [dropular.net](http://dropular.net/).\n\n## MIT license\n\nCopyright (c) 2009-2010 Rasmus Andersson \u003chttp://hunch.se/\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsms%2Foui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frsms%2Foui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsms%2Foui/lists"}