{"id":31923068,"url":"https://github.com/rocketchat/gsoc-community-hub","last_synced_at":"2025-10-13T23:43:51.503Z","repository":{"id":155833635,"uuid":"619892709","full_name":"RocketChat/GSoC-Community-Hub","owner":"RocketChat","description":"Ready-to-run hub to engage and extend your Google Summer of Code Community","archived":false,"fork":false,"pushed_at":"2025-08-03T13:30:43.000Z","size":4550,"stargazers_count":15,"open_issues_count":8,"forks_count":35,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-03T15:15:44.392Z","etag":null,"topics":["community","community-project","component-architecture","full-stack","gsoc","javscript","nextjs"],"latest_commit_sha":null,"homepage":"","language":"Svelte","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/RocketChat.png","metadata":{"files":{"readme":"README.md","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,"zenodo":null}},"created_at":"2023-03-27T16:08:45.000Z","updated_at":"2025-08-03T13:30:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"bfbaab7f-b3f8-4441-8571-3f3c4de53fdb","html_url":"https://github.com/RocketChat/GSoC-Community-Hub","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RocketChat/GSoC-Community-Hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FGSoC-Community-Hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FGSoC-Community-Hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FGSoC-Community-Hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FGSoC-Community-Hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RocketChat","download_url":"https://codeload.github.com/RocketChat/GSoC-Community-Hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FGSoC-Community-Hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017232,"owners_count":26086016,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["community","community-project","component-architecture","full-stack","gsoc","javscript","nextjs"],"created_at":"2025-10-13T23:43:46.045Z","updated_at":"2025-10-13T23:43:51.497Z","avatar_url":"https://github.com/RocketChat.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Google Summer of Code Community Hub\n\nAn easy to use, ready-for-customization, community engagement and management system specially designed for Google Summer of Code communities.\n\n## Technical Synopsis\n\nA fully componentized (not page-based as in nextjs) scalable web app, with a set of tested full-stack configurable GSoC-friendly components, ready to be customized for your GSoC community.\n\nFull stack components are components that may encapsulate server-side behaviors in addition to client-side/UI behaviors.\n\nThis system can be configured (layout of pages based on components; and parameterization of the components) via a specially designed DSL.\n\nThe way the Domain Specific Language works is simple;\n\n- Specify imports using `use X from module`\n- Get component data using the `get` syntax\n- Specify page layout by placing components inside of the `\u003cmain\u003e\u003c/main\u003e` tag\n\nThis DSL will facilitate the creation of a near-future drag-and-drop \"what-you-see-is-what-you-get\" GUI layout tool; as well as AI prompt based generation of entire community websites. For a more thorough rundown, its creator provides a excellent [summary](https://github.com/anjy7/Google-Summer-of-Code).\n\nCurrently, the system is built based on [Svelte 5](https://github.com/sveltejs/svelte). Layout is powered by [bootstrap](https://github.com/twbs/bootstrap). Runtime is [bun](https://github.com/oven-sh/bun).\n\n## Developing\n\nThe system is superbly lightweight yet runs across all OS and environments.\n\nFirst, install bun. It should take 2 minutes.\n\n```bash\ncurl -fsSL https://bun.sh/install | bash\n```\n\nThen, cd into your working directory `generatedsvelte`.\n```bash\ncd generatedsvelte\n```\n\nTo install dependencies:\n\n```bash\nbun install\n```\n\nCustomize the environment variables:\n\n```bash\ncp sample.env.local  .env.local\nnano  .env.local\n```\n\nTo generate specified pages via the DSL (these will be found in `./src/routes`):\n\n```bash\nbun run compile\n```\n\nTo start a development server, with a browser on the app's home page:\n\n```bash\nbun run dev --open\n```\n\n## Building\n\nTo create a production version of your system:\n\n```bash\nbun run build\n```\n\nYou can preview the production build with `bun run preview`.\n\n## What is an `.agml` file?\n\nIn a nutshell, `.agml` files represent our **domain-specific language (DSL)** designed to simplify the creation of Svelte pages. The syntax is intentionally minimal and easy to learn, with just a few conventions to follow:\n\n- **`i` (install)**: Installs a specified package from a registry (e.g., `npm`).  \n  _Note: Since all components are currently available in `lib/components`, this command is optional and can usually be skipped._\n\n- **`use`**: Imports specific components or modules from the package.\n\n- **`get`**: Fetches and binds data that will be passed as props to components.\n\n- The rest of the page content should be enclosed within a `\u003cmain\u003e\u003c/main\u003e` block.\n\n## Components Ecosystem\n\nThe following independent components are available.\u0026ensp; They are located under the `./src/lib/components` directory.\u0026ensp; Many more components are being created/ported. \u0026ensp; Configuration and parameterization are documented on their own doc page.\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n\n|Component Name|Description|Doc link|\n|------|------|------|\n|`menubar` - Menu Bar\u003cbr/\u003e\u003cbr/\u003e\u003cbr/\u003e|A navigation menu aross the top of the page that can be configured.  It is tightly integrated with authentication (we support only OIDC) and _superprofile_ (scaled global server state management)|[link](./docs/menubar.md)|\n|`herounit` -  Hero Unit|A large formatted text box across the page|[link](./docs/herounit.md)|\n|`searchbar` - Search Bar|Dynamic search bar allowing user selection of search provider|[link](./docs/searchbar.md)|\n|`statscounters` - Statistic Counter|Presents a numeric metrics by counting up from zero|[link](./docs/statscounters.md)|\n|`simonlinktiles` - Simon-like link tiles|Large rectangular tiles laid out in a grid|[link](./docs/simonlinktiles.md)|\n|`carousel` - Carousel|A rotating carousel of images and headlines that can be clicked|[link](./docs/carousel.md)|\n|`personatiles` - Persona Tiles|Iconic tiles with labels representing the personas using this server|[link](./docs/personatiles.md)|\n|`eventposter` - Event Poster|It is a feature-rich and fully responsive event showcase block.|[link](./docs/eventposter.md)| \n|`leaderboard` - Leaderboard|A table of contributors ranked by `mergedPRs` `openPRs` and `issues`|[link](./docs/leaderboard.md)|\n|`rcstatscounter` - Rocket Chat Statistic Counter|Presents a numeric metrics of Rocket Chat Server by counting up from zero|[link](./docs/rcstatscounter.md)|","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocketchat%2Fgsoc-community-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocketchat%2Fgsoc-community-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocketchat%2Fgsoc-community-hub/lists"}