{"id":14064718,"url":"https://github.com/PierreRochard/general","last_synced_at":"2025-07-29T18:33:50.522Z","repository":{"id":127111056,"uuid":"80680434","full_name":"PierreRochard/general","owner":"PierreRochard","description":"General is a web application development framework","archived":false,"fork":false,"pushed_at":"2024-07-01T17:06:16.000Z","size":332,"stargazers_count":33,"open_issues_count":0,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-22T21:46:01.810Z","etag":null,"topics":["api","api-server","plpgsql","postgres","postgresql","postgrest","python","python3","rest","rest-api","restful","restful-api","sqlalchemy","websocket","websocket-server"],"latest_commit_sha":null,"homepage":"","language":"Python","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/PierreRochard.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-02T00:48:28.000Z","updated_at":"2024-10-10T11:27:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"ec615069-df98-4c89-9f5c-b25f42e9963e","html_url":"https://github.com/PierreRochard/general","commit_stats":{"total_commits":244,"total_committers":3,"mean_commits":81.33333333333333,"dds":0.4672131147540983,"last_synced_commit":"d9f19ef021861d31d9e6d0dd0ceb67a4eb51cea6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreRochard%2Fgeneral","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreRochard%2Fgeneral/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreRochard%2Fgeneral/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreRochard%2Fgeneral/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PierreRochard","download_url":"https://codeload.github.com/PierreRochard/general/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228040812,"owners_count":17860211,"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":["api","api-server","plpgsql","postgres","postgresql","postgrest","python","python3","rest","rest-api","restful","restful-api","sqlalchemy","websocket","websocket-server"],"created_at":"2024-08-13T07:04:02.226Z","updated_at":"2024-12-04T03:31:22.607Z","avatar_url":"https://github.com/PierreRochard.png","language":"Python","readme":"![General Insignia][insignia]\n\n[insignia]: https://github.com/PierreRochard/general/blob/master/general_insignia.png \"General Insignia\"\n\n# General\n\nGeneral is a framework that integrates mature open source libraries to \ndeliver modern web applications with astounding effectiveness.\n\nGeneral solves the repetitive problem of building CRUD interfaces\non top of a rich data model. \n\nGeneral revolves around PostgreSQL, the most powerful and mature relational\ndatabase.\n\nGeneral is a set of API endpoints that provide configuration parameters to \na front end application.\n\nConfiguration parameters are stored in normalized database tables.\n\nConfiguration parameters can be applied to users or groups.\n\nCurrently, configuration parameters encompass the following\nfront end components:\n* Menubar\n* Tables\n* Forms\n\nAdditional components will be supported as General evolves.\n\nExamples of configuration parameters include:\n* Which tables or forms appear in the menubar and its submenus\n* What icon is associated with each table or form\n* Custom names for tables and forms\n* Which columns or fields are visible/editable\n* Which columns the user can filter on\n\n\n## The stack\n\n### SQLAlchemy\n\nThe models for General are developed as Python classes with the SQLAlchemy ORM.\nSQLAlchemy is a highly flexible and mature ORM.\n\nYour application models can use any ORM in any language, \nas long as it's compatible with PostgreSQL. \nYou can also just use raw SQL scripts to develop your data model.\n\n### Alembic\n\nMigrations for General are performed with Alembic as it is built for \nSQLAlchemy and performs as advertised.\n\nFor changes to your application schema you can use your ORM's migration manager \nor an independent one like Flyway.\n\n### PostgreSQL\n\nPostgreSQL is the most reliable and feature-rich relational database. \n\nBoth General's tables/functions as well as your application's are automatically\ndetected using the PostgreSQL's system catalogs. This avoids the issue of\nrepeating yourself, the data model is hard-coded only in one place: your ORM or SQL scripts.\n\n### PostgREST\n\nPostgREST is the service layer of General. It automatically generates\nthe REST endpoints based on the tables, views, and functions defined inside\nthe API schema(s). All of the relevant HTTP verbs are implemented and a\nSwagger/OpenAPI specification is automatically generated as well.\nThis avoids the issue of repeating yourself, \nthe data model is hard-coded only in one place: \nyour ORM or SQL scripts. (seeing a pattern?)\n\n### Nginx\n\nIt is recommended that you place nginx in front of PostgREST configured\nas a reverse proxy.","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPierreRochard%2Fgeneral","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPierreRochard%2Fgeneral","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPierreRochard%2Fgeneral/lists"}