{"id":22490219,"url":"https://github.com/multi-coop/multi-site-app","last_synced_at":"2025-08-02T22:32:36.248Z","repository":{"id":41658857,"uuid":"450066272","full_name":"multi-coop/multi-site-app","owner":"multi-coop","description":"distant markdown files to website","archived":false,"fork":false,"pushed_at":"2024-06-14T11:45:02.000Z","size":682,"stargazers_count":2,"open_issues_count":13,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-14T12:37:27.089Z","etag":null,"topics":["buefy","bulma","dotenv","gray-matter","markdown","nuxtjs","showdown","vuejs"],"latest_commit_sha":null,"homepage":"https://www.multi.coop","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/multi-coop.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":"2022-01-20T11:17:51.000Z","updated_at":"2024-06-14T12:37:27.616Z","dependencies_parsed_at":"2024-02-29T21:51:14.194Z","dependency_job_id":null,"html_url":"https://github.com/multi-coop/multi-site-app","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/multi-coop%2Fmulti-site-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multi-coop%2Fmulti-site-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multi-coop%2Fmulti-site-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multi-coop%2Fmulti-site-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/multi-coop","download_url":"https://codeload.github.com/multi-coop/multi-site-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228500945,"owners_count":17930165,"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":["buefy","bulma","dotenv","gray-matter","markdown","nuxtjs","showdown","vuejs"],"created_at":"2024-12-06T17:21:56.060Z","updated_at":"2024-12-06T17:24:33.165Z","avatar_url":"https://github.com/multi-coop.png","language":"Vue","funding_links":[],"categories":["Vue"],"sub_categories":[],"readme":"# Multi-site\n\n**This app allows to deploy an SPA website, by pointing to distant contents (markdown files) hosted anywhere on github or gitlab.**\n\n---\n## Why this project ? \n\n( ... so you may ask ... )\n\nWe simply didn't want to have all our `.md` contents in the same repo than the app deploying them into an simili-static website...\n\nYes, sometimes it's simpler to distinguish the repos you want people to collaborate into, depending if you're expecting them to contribute only to the content texts, or to the code... Usually it's not the same kind of people nor the same required skills.\n\nWe also wanted to display some filterable galeries : for instance having a page with a card for every team member, or a card for every project in our portfolio, ... and filtering which cards you want to hide given some tags...\n\nFinally we wanted a reusable app to deploy different websites, without having to fork the project... It's just a matter of changing the `.env` file and having another contents in another repo...\n\nIn short, vuepress or equivalent \"static-contents-based\" apps weren't versatile nor simple enough for our needs (and we wanted to have a bit of fun doing this project from scratch)...\n\n\n## Who did that ?\n\n( ... Aren't you a bit of a curious fellow ? ... )\n\nThis open source tool was developped by the tech cooperative **[multi](https://multi.coop)** (and our website is based on this solution).\n\n---\n\n## Main features\n\n- Load distant `.md` contents hosted on Github or Gitlab ;\n- Multi lingual (if you provide the dictionnaries) ;\n- Filters and cards ;\n- Specific urls for every item you can provide on the fly ;\n\n---\n\n## Setup\n\n### The `.env` file\n\nFirst you have to create an `.env` file at the root of the project, which can be based on the `example.env` file :\n\nThe template - `example.env` - is present at the root. You can copy-paste it and customize it wiith your own values.\n\n```shell\n# from repo root\ncp example.env .env\n```\n\nYou should have an `.env` file looking like this :\n\n```bash\n### - - - - - - - - - - - - - - - - - - - - - ###\n### GLOBAL ENV VARS\n### - - - - - - - - - - - - - - - - - - - - - ###\n# NUXT_ENV_RUN_MODE : dev | preprod | prod\nNUXT_ENV_RUN_MODE=dev\nNUXT_ENV_HOST=localhost\nNUXT_ENV_PORT_DEV=4000\nNUXT_ENV_PORT_PROD=4001\nNUXT_ENV_APP_TITLE=Multi-site\n\n### - - - - - - - - - - - - - - - - - - - - - ###\n### CONTENTS\n### - - - - - - - - - - - - - - - - - - - - - ###\nNUXT_ENV_SITE_CONFIG=https://github.com/co-demos/multi-site-contents/blob/main/config/global.md\n```\n\n### About the distant repo (your `.md` files), the \"contents\" repo\n\nYou can base the organisation of your distant repo by checking [the example of this repo](https://github.com/co-demos/multi-site-contents).\n\nThe distant \"contents\" repo is organized as follow : \n\n```\n.\n├── README.md\n├── LICENCE.md\n├── config: folder containing the config data necessary to deploy a website with the `multi-site` app\n│   ├── global.md : global config file (md and yaml head)\n│   ├── navbar.md : config file for navbar butttons and links (md and yaml head)\n│   ├── route.md : config file for routes (md and yaml head)\n│   └── footer.md : config file for footer links (md and yaml head)\n├── images: folder containing images\n│   └── \u003cwhatever you want\u003e ...\n├── texts: folder containing all markdown files, including data files \n    └── \u003cwhatever you want\u003e ...\n\n```\n\n### Local development\n\nThen you just have to run the app :\n\n```bash\nnvm use\nnpm run dev\n```\n\n... and check if everything seems ok, given the settings from the `.env` file) :\n\n[`http://localhost:4000/`](http://localhost:4000/)\n\n---\n\n## Stack\n\nTechnologies used for **multi-site-app** are the followiing :\n\n- [Nuxt.js](https://nuxtjs.org) - js framework js based on vue.js ;\n- [Buefy](https://buefy.org/documentation) - css framework based on [Bulma](https://bulma.io/) css framework ;\n- [Axios](https://axios-http.com/) - for http client requests ;\n- [Dotenv](https://www.npmjs.com/package/dotenv) - js library to load env variables  ;\n- [Gray matter](https://www.npmjs.com/package/gray-matter) - js library to transform yaml or markdown data into js objects  ;\n- [vue-Showdown](https://vue-showdown.js.org/) - js plugin to transform markdown into html  ;\n- [highlight.js](https://highlightjs.org/) - to apply css to code blocks (nice colors for every languages) ;\n\n---\n\n## Build Setup\n\n```bash\n# install dependencies\nnpm install\n\n# serve with hot reload at localhost:3000\nnpm run dev\n\n# build for production and launch server\n$ npm run build\n$ npm run start\n\n# generate static project\n$ npm run generate\n```\n\nFor detailed explanation on how things work, check out the [documentation](https://nuxtjs.org).\n\n---\n\n## Deployment\n\nThese instances are deployed  with Netlify :\n\n- Test deploy : [![Netlify Status](https://api.netlify.com/api/v1/badges/5a774814-2a6a-4da7-a8b5-1cc3d654df2a/deploy-status)](https://app.netlify.com/sites/multi-site-app-test/deploys) - rendering [these content](https://github.com/multi-coop/multi-site-contents).\n- Official website of [our tech cooperative multi](https://multi.coop) : [![Netlify Status](https://api.netlify.com/api/v1/badges/5be5abcb-7667-4b96-b1d1-952839f70c2f/deploy-status)](https://app.netlify.com/sites/multi-website/deploys) - rendering [these content](https://github.com/multi-coop/multi-site-contents)\n- [Official Documentation website](https://gitribute-docs.multi.coop) for the [Gitribute](https://gitlab.com/multi-coop/gitribute) project : [![Netlify Status](https://api.netlify.com/api/v1/badges/8a49a93f-e443-48e5-b5d8-baa2d7f5fee5/deploy-status)](https://app.netlify.com/sites/gitribute-documentation/deploys) - rendering [these content](https://github.com/multi-coop/gitribute-documentation-content)\n\n---\n\n## Contributions\n\nIf you want to propose somme enhancements to our app please make your pull requests against the `main` branch. We will review that with great pleasure :)\n\nYou can also add issues directly in the reop, or add notes or issues from our [github \"project\" page](https://github.com/orgs/multi-coop/projects/2).\n\n---\n\n## Special Directories\n\nYou can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality.\n\n### `assets`\n\nThe assets directory contains your uncompiled assets such as Stylus or Sass files, images, or fonts.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/assets).\n\n### `components`\n\nThe components directory contains your Vue.js components. Components make up the different parts of your page and can be reused and imported into your pages, layouts and even other components.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/components).\n\n### `layouts`\n\nLayouts are a great help when you want to change the look and feel of your Nuxt app, whether you want to include a sidebar or have distinct layouts for mobile and desktop.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/layouts).\n\n### `pages`\n\nThis directory contains your application views and routes. Nuxt will read all the `*.vue` files inside this directory and setup Vue Router automatically.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/get-started/routing).\n\n### `plugins`\n\nThe plugins directory contains JavaScript plugins that you want to run before instantiating the root Vue.js Application. This is the place to add Vue plugins and to inject functions or constants. Every time you need to use `Vue.use()`, you should create a file in `plugins/` and add its path to plugins in `nuxt.config.js`.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/plugins).\n\n### `static`\n\nThis directory contains your static files. Each file inside this directory is mapped to `/`.\n\nExample: `/static/robots.txt` is mapped as `/robots.txt`.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/static).\n\n### `store`\n\nThis directory contains your Vuex store files. Creating a file in this directory automatically activates Vuex.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/store).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmulti-coop%2Fmulti-site-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmulti-coop%2Fmulti-site-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmulti-coop%2Fmulti-site-app/lists"}