{"id":20284687,"url":"https://github.com/ovesco/personal-website","last_synced_at":"2026-05-28T13:31:34.565Z","repository":{"id":41638657,"uuid":"264926668","full_name":"ovesco/personal-website","owner":"ovesco","description":"Softweng blog project and personal website","archived":false,"fork":false,"pushed_at":"2022-12-12T19:52:38.000Z","size":3008,"stargazers_count":0,"open_issues_count":23,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-02T21:53:11.447Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/ovesco.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":"2020-05-18T12:05:18.000Z","updated_at":"2020-06-09T12:59:43.000Z","dependencies_parsed_at":"2023-01-28T00:31:03.418Z","dependency_job_id":null,"html_url":"https://github.com/ovesco/personal-website","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ovesco/personal-website","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovesco%2Fpersonal-website","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovesco%2Fpersonal-website/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovesco%2Fpersonal-website/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovesco%2Fpersonal-website/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ovesco","download_url":"https://codeload.github.com/ovesco/personal-website/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovesco%2Fpersonal-website/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33611248,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"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":[],"created_at":"2024-11-14T14:21:05.066Z","updated_at":"2026-05-28T13:31:34.545Z","avatar_url":"https://github.com/ovesco.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Softweng project\n\nThis project was developed for the Softweng MSE master at HES-SO. It's a small blog made with Vuepress automatically built with github actions on push.\n\nYou can [check it out here!](https://guigui.ch/)\n\n## Technologies\nThe purpose of the project was to familiarize with frontend framework technologies like Vue/React or other.\nI chose to go on using Vuepress to build the blog. As such, we use:\n- Vuejs\n- Vuex\n- Vuepress\n\nAs main technologies.\n\n### Building\nIn order to play with this:\n1. Clone this repository and `cd` in it\n2. Run `npm install` to install all dependencies as well as `npm i -g vuepress` to load the vuepress builder\n3. Run `npm run dev` to start the blog locally on your machine\n\n### Running in docker\nIf you want to run this small site in docker, do the following:\n1. Run `docker build --tag vpovesco:1.0 .` to build an image from the given dockerfile\n2. Run `docker run -p 8080:8080 -d vpovesco:1.0` to run it on port 8080\n\nIt internally uses `live-server` which is not the best choice to expose a website, but it works for a proof-of-concept.\n\n### Running tests\nA small test suite was developed to check the behavior of the Vuex store, you can run it with `npm test`.\nIt's built using `Jest` and babel-jest for transpilation.\n\n## Something cool about this blog\nEvery visitor can have his own set of *favorite* article. When on an article simply click the heart button\nwhich will add it to vuex and automatically persist it to local storage using `vuex-persist`, a plugin\nfor Vuex.\n\n## Difficulties encountered\nVuepress is quite tough to get started with. Theming is complex and extending an existing theme is more\ncomplex than it seems. Loading external libraries like Vuex is also troublesome and doesn't follow the\nstandard registration flow. But all in all it was a nice experiment.\n\n### Making vuex persist work with SSR\nVuepress couldn't build the project because we're using `window.localStorage` in the store to persist it\nautomatically. In order for everything to work, after a bit of digging, I ended up with the following\nsolution:\n```js\nif (typeof process === 'undefined') {\n    // We're in browser!\n}\n```\nThis also allows us to run jest tests without problems.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovesco%2Fpersonal-website","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovesco%2Fpersonal-website","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovesco%2Fpersonal-website/lists"}