{"id":19341861,"url":"https://github.com/samvera/samvera.org","last_synced_at":"2025-10-10T21:11:45.580Z","repository":{"id":38893629,"uuid":"485419077","full_name":"samvera/samvera.org","owner":"samvera","description":"Static built NextJS web app for samvera.org","archived":false,"fork":false,"pushed_at":"2025-09-17T19:30:41.000Z","size":39865,"stargazers_count":2,"open_issues_count":11,"forks_count":1,"subscribers_count":66,"default_branch":"main","last_synced_at":"2025-09-17T21:40:27.887Z","etag":null,"topics":["documentation","markdown","nextjs","react","tailwindcss"],"latest_commit_sha":null,"homepage":"https://samvera.org","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/samvera.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-04-25T15:04:05.000Z","updated_at":"2025-08-13T15:41:38.000Z","dependencies_parsed_at":"2024-01-09T19:32:10.240Z","dependency_job_id":"63caf8ba-fd80-45ee-9d29-18bd52d83d44","html_url":"https://github.com/samvera/samvera.org","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/samvera/samvera.org","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samvera%2Fsamvera.org","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samvera%2Fsamvera.org/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samvera%2Fsamvera.org/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samvera%2Fsamvera.org/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samvera","download_url":"https://codeload.github.com/samvera/samvera.org/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samvera%2Fsamvera.org/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005411,"owners_count":26083883,"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-10T02:00:06.843Z","response_time":62,"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":["documentation","markdown","nextjs","react","tailwindcss"],"created_at":"2024-11-10T03:32:49.006Z","updated_at":"2025-10-10T21:11:45.565Z","avatar_url":"https://github.com/samvera.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Samvera Community Website\n\nThis is a [NextJS framework](https://nextjs.org/) application which creates a static website powered by local [markdown](https://www.markdownguide.org/getting-started/) files and [Contentful CMS](https://www.contentful.com/).\n\nHow do I use this app / code repository / website?\n\n## Content managers\n\nAdding or updating content to the Samvera.org website happens in one of two ways:\n\n1. At [Contentful CMS](https://www.contentful.com/)\n2. Update local project files in the `/markdown` folder\n\n### Contentful CMS\n\nThe preferred method of updating site content is through the [Contentful](https://www.contentful.com/) headless CMS (Content Management System). This is a web-based interface that allows you to edit content in a more user-friendly way than editing markdown files. The CMS is currently used to provide data for the following pages/info on the site:\n\n- Blog posts (https://samvera.org/news-and-events)\n- Samvera Partners (https://samvera.org/)\n- Examples and Demos (https://samvera.org/repository-solutions/examples-and-demos)\n- User Profiles (https://samvera.org/the-community/user-profiles)\n- Service Providers (https://samvera.org/the-community/service-providers)\n- FAQ (https://samvera.org/the-community/faq)\n- Samvera Adopters (https://samvera.org/the-community/samvera-adopters)\n\n#### Blog Post updates\n\nBlog Posts (ie. News and Events) updated via Contentful are used to create dynamic individual pages at build time, since samvera.org is a static site (no server interaction). After creating or updating Blog Post content, you must manually trigger a re-deploy of the samvera.org site.\n\n1. Go to the Github Actions tab in the `samvera.org` repository.\n2. Click on \"Deploy to GitHub Pages\" in the left-hand column, under \"Actions\" / \"All workflows\".\n3. Click on \"Run workflow\" in the upper right-hand corner (see screenshot below):\n\n![image](https://github.com/samvera/samvera.org/assets/3020266/056d1558-216c-4bdd-aa43-adda71a9e6ac)\n\n### Markdown\n\nThis project's `/markdown` folder content reflects the shape of the website's information architecture. Sub folders (like `/get-started`, `/the-community`, etc) match the primary navigation links.\n\n![image](https://user-images.githubusercontent.com/3020266/186482460-51e7e89f-2ca5-4824-ba0a-22d41144a6ae.png)\n\nWithin each subfolder you'll find markdown files, which contain page content.\n\nTo add a new page to the website, locate the folder (main nav link), where you want the new page to live, and create a new markdown file titled something which follows suit on sibling files. Ie. `/get-started/my-new-page.md`.\n\n#### Front Matter\n\nAll site markdown files use the [Front Matter](https://www.npmjs.com/package/gray-matter) convention for providing some helpful metadata on our markdown files. So if we look at an existing file as an example...\n\n`/markdown/get-started/faq.md`\n\nWe'll see at the top of the file:\n\n```\n---\ntitle: \"FAQ\"\ndate: \"2016-12-05\"\n---\n\n[**What is Samvera?**](#01)\n\n...rest of the markdown content goes here\n```\n\nAdjust these to taste.\n\n#### Committing your updates\n\n(For now), site updates will follow a [Gitflow workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow). Best practice is to create a new branch (from the `main` branch), make your edits, and create a PR (Pull request). Assign a member of the Samvera Community to review your PR. Once approved, merge your branch back into `main`. All commits to the `main` branch (our production branch), will trigger a new build of the website. Github Actions will also automatically deploy a public version of the website to: https://samvera-labs.github.io/samvera.org/.\n\n### Non-markdown driven pages\n\n_Note this content is currently in transition to Contentful CMS._\n\n#### The Community / Community Leadership\n\nTo update this file, open the `components/the-community/CommunityLeadership.jsx` component and update the data directly.\n\n#### The Community / FAQ\n\nTo update this file, open the `components/the-community/Faq.jsx` component and update the HTML/JSX directly.\n\n## Developers\n\nThis is a [NextJS application](https://nextjs.org/) and follows normal NextJS conventions. To run the app locally, clone this repository, open your terminal, and run the following commands:\n\n```bash\n# PNPM (NPM alternative =\u003e https://pnpm.io/)\npnpm install\npnpm dev\n\n# Or standard NPM\nnpm install\nnpm run dev\n```\n\n### CMS local dev setup\n\nIf you're interested in running the app locally as a developer and working on pages which interact with Contentful CMS, you'll need to create a `.env.local` file in the project root. This file is ignored by git, so you'll need to create it yourself. The file should contain the following:\n\n```\nNEXT_PUBLIC_CONTENTFUL_SPACE_ID=gmxjheo1ix1o\nNEXT_PUBLIC_CONTENTFUL_ACCESS_TOKEN=[TOKEN_GOES_HERE]\n\nEmail adam.arling@northwestern.edu or Heather Greer Klein \u003cheather@samvera.org\u003e for access to the token\n```\n\n## Top level app overview\n\n`/app-config.js`\nThis is a top level configuration file for the app. Common items are listed here and the app will wire the data into appropriate places in the UI. It currently contains:\n\n- Samvera Partners list\n\n`/components`\nThis is where React components live, which construct the building blocks of the UI.\n\n`/markdown`\nSee above\n\n`/pages`\nThis directory is a NextJS convention which will autogenerate app routes. These folders should mirror the directory structure of `/markdown`, and that's how content and routes will be dynamically created as part of the static site build.\n\nWithin each child directory (ie. `pages/get-started`), is a file called `[slug].jsx`. This is a React component wired up to display dynamic content pulled in from the Markdown files mentioned above. In each `[slug].jsx` file, you'll make it unique by updating a `CONFIG` variable defined in the component. For example in the \"About\" folder:\n\n```\nconst CONFIG = {\n  parentDir: \"get-started\",\n  parentDirLabel: \"Get Started\",\n};\n```\n\n## Building a static version of the site\n\nIn Github, Github Actions will run a static build of the site on every merge into the `/main` code branch.\n\n### Local building\n\nIf you're curious to see how the static site will build, run the following commands.\n\n```bash\n# See more info below\nnpm run build-site-nav\n\n# Build a static version of the site to an /out directory\nnpm run build\n\n# Assuming you are currently in the project root. Find your way to the /out directory\ncd out\n\n# Start a local web server\nnpx serve\n```\n\n`serve` should output a url for you. Follow the link and you'll be able to see the static build.\n\n### Build site navigation\n\nSite navigation and linking can be automated using the following script. Essentially it reads the contents of the project's `/markdown` directory to know about News items, and pages tucked under \"parent\" pages for primary site navigation.\n\nThe command below executes a NodeJS script which will read the `/markdown` directory in the project, and dynamically create a site navigation file, `/site-navigation.js`. This navigation file is used by the application to create Primary Navigation.\n\nSite navigation generation is automated in our Github Actions workflow. You can run the script locally however if you're working on the site and want to manually re-build navigation.\n\n```\nnpm run build-site-nav\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamvera%2Fsamvera.org","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamvera%2Fsamvera.org","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamvera%2Fsamvera.org/lists"}