{"id":48245277,"url":"https://github.com/meugenom/meugenom.com","last_synced_at":"2026-04-04T20:33:57.761Z","repository":{"id":40332806,"uuid":"244637301","full_name":"meugenom/meugenom.com","owner":"meugenom","description":"[NO-AI] - Personal content system on pure Typescript, built with Spring-boot Java, GraphQl with using of Webpack,  Github-API, Redis","archived":false,"fork":false,"pushed_at":"2026-04-04T16:30:18.000Z","size":11013,"stargazers_count":1,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-04T17:05:26.864Z","etag":null,"topics":["backend","frontend","graphql","java","spring-boot","tailwind","typescript","webpack5"],"latest_commit_sha":null,"homepage":"https://meugenom.com","language":"TypeScript","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/meugenom.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":"2020-03-03T13:01:50.000Z","updated_at":"2026-04-04T16:30:23.000Z","dependencies_parsed_at":"2023-10-22T10:25:23.733Z","dependency_job_id":"dc8efd14-b08b-4924-a7c8-93fde6397b09","html_url":"https://github.com/meugenom/meugenom.com","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/meugenom/meugenom.com","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meugenom%2Fmeugenom.com","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meugenom%2Fmeugenom.com/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meugenom%2Fmeugenom.com/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meugenom%2Fmeugenom.com/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meugenom","download_url":"https://codeload.github.com/meugenom/meugenom.com/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meugenom%2Fmeugenom.com/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31413269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["backend","frontend","graphql","java","spring-boot","tailwind","typescript","webpack5"],"created_at":"2026-04-04T20:33:57.059Z","updated_at":"2026-04-04T20:33:57.671Z","avatar_url":"https://github.com/meugenom.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Personal Web Site:\n[![Website Status](https://img.shields.io/badge/My_Site-Live-brightgreen?style=for-the-badge\u0026logo=google-chrome)](https://meugenom.com)\n\u003c/br\u003e\n![TypeScript](https://img.shields.io/badge/typescript-%23007acc.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white)\n![Spring Boot](https://img.shields.io/badge/Spring_Boot-6DB33F?style=for-the-badge\u0026logo=spring-boot\u0026logoColor=white)\n![GraphQL](https://img.shields.io/badge/-GraphQL-E10098?style=for-the-badge\u0026logo=graphql\u0026logoColor=white)\n![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge\u0026logo=redis\u0026logoColor=white)\n![Webpack](https://img.shields.io/badge/webpack-%238DD6F9.svg?style=for-the-badge\u0026logo=webpack\u0026logoColor=black)\n\u003c/br\u003e\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge\u0026logo=opensourceinitiative\u0026logoColor=white)\n\n\u003ccenter\u003e\n\t\u003cimg alt=\"\" src=\"./assets/panda-meugenom.png\"/\u003e\n\u003c/center\u003e\n\n### What is it:\n\nThis is my personal web page, that you can see [https://meugenom.com](https://meugenom.com).\n\n### What were used to prepare this page:\n\n- imported own markdown-ts-compiler v1.0.4 (Markdown-\u003eHTML [Markdown Typescript Compiler](https://github.com/meugenom/markdown-ts-compiler) with Tailwind CSS);\n- used Typescript own [SPA MVC Router](https://github.com/meugenom/spa-mvc-router) on port 8082;\n- Java and Spring-Boot (backend part on port 4000);\n- GraphQL (frontend and backend part);\n- Webpack (ES6);\n- Tailwind CSS;\n- maven;\n- Redis (port 9001), set up  etc/redis.conf with port 9001;\n- Github Token and User Name\n\n### How to set up:\n\n1. Need preinstalled java 21 2023-09-19 LTS, npm(10.8.2), node(20.20.0), mvn(3.8.1), nginx(1.29.5 stable);\n\n2. for information about projects you need  personal access token [https://github.com/settings/tokens](https://github.com/settings/tokens);\n\n3. Create .env file in the `client/.env`directory (see `client/simple.env`)  and add this token to\n```bash\n  # client/.env\n\n  # Token see 2. \n  GITHUB_TOKEN=YOUR_GITHUB_TOKEN\n  # Your Github Name\n  GITHUB_USER_NAME=YOUR_GITHUB_NAME\n  # by default APP_MODE=development or production\n  APP_MODE=development\n  # your graphql hostname\n  GRAPHQL_HOST=http://localhost:8080/graphql/\n\n```\n\n4. Change please title and description for meta tags in `client/src/js/config.ts`\n \n```ts\n  title : \"my title\", // by default is \"meugenom.com content platform\",\n  description : \"My Personal Content System\", // by default is \"Meugenom is a personal blog about software development, technology, and programming.\"\n```\n  \n\n\n### How to start:\n\n1. clone repository \n`git clone https://github.com/meugenom/meugenom.com.git`\n\n2. change dir\n`cd meugenom.com/client`\n\n3. install npm libraries\n`yarn install`\n\n4. for building frontend part:\n`yarn build`\n\n5. create .env file in the `client/.env`directory (see `client/simple.env`)  and add this token to GITHUB_TOKEN= and github user name to GITHUB_USER_NAME=\n\n6. start frontend server\n\t**for development:**\t\n\t- change .env file in the `client/.env`directory (see `client/simple.env`)  and add to APP_MODE=development\n\t- start frontend dev server (for development)\n\t`yarn start`\n\n\t**for production:**\t\n\t- change .env file in the `client/.env`directory (see `client/simple.env`)  and add to APP_MODE=production\n\t- start frontend prod server (for production)\n\t`node meugenom-server.js`\n\n7. build backend part:\n\t**for development:**\t\n\t- `cd ../server`\n\t- `mvn clean package`\n\n\t**for production:** when is not local machine\n\t- `cd ../server`\t\n\t- `mvn clean package`\n\n\n8. install Redis server and change port to 9001 in the `etc/redis.conf` file by default it's 6379\n\n9. start backend dev server `mvn clean spring-boot:run`\n\tor\n\t**for development**\n\t- `./start-dev-server.sh`\n\n\t**for production**\n\t- `./start-prod-server.sh`\n\n### CORS settings:\n1. write to  \"/etc/hosts\" host:\n127.0.0.1 localhost\n\n2. Open nginx.conf, comment old locations and add this:\n\n```bash\n\nserver {\n        listen       8080;\n        server_name  localhost;\n        \n\t\tlocation / {\n            if ($request_method = OPTIONS) {\n              return 204;\n            }\n\n    \tadd_header Access-Control-Allow-Origin *;\n    \tadd_header Access-Control-Max-Age 3600;\n    \tadd_header Access-Control-Expose-Headers Content-Length;\n    \tadd_header Access-Control-Allow-Headers Range;\n\n            proxy_http_version  1.1;\n            proxy_cache_bypass  $http_upgrade;\n            proxy_set_header Upgrade           $http_upgrade;\n            proxy_set_header Connection        \"upgrade\";\n            proxy_set_header Host              $host;\n            proxy_set_header X-Real-IP         $remote_addr;\n            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\n            proxy_set_header X-Forwarded-Proto $scheme;\n            proxy_set_header X-Forwarded-Host  $host;\n            proxy_set_header X-Forwarded-Port  $server_port;\n\n            proxy_pass http://localhost:8082;\n        }\n\n          location /graphql/ {\n          if ($request_method = OPTIONS) {\n            add_header Access-Control-Allow-Origin *;\n            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';\n            add_header Access-Control-Allow-Headers 'Authorization, Content-Type, Accept';\n            add_header Access-Control-Max-Age 3600;\n            return 204;\n          }\n\n          add_header Access-Control-Allow-Origin *;\n          add_header Access-Control-Max-Age 3600;\n          add_header Access-Control-Expose-Headers Content-Length;\n          add_header Access-Control-Allow-Headers 'Authorization, Content-Type, Accept';\n\n          client_max_body_size       10M;\n\n          proxy_http_version  1.1;\n          proxy_set_header Upgrade           $http_upgrade;\n          proxy_set_header Connection        \"upgrade\";\n          proxy_set_header Host              $host;\n          proxy_set_header X-Real-IP         $remote_addr;\n          proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\n          proxy_set_header X-Forwarded-Proto $scheme;\n          proxy_set_header X-Forwarded-Host  $host;\n          proxy_set_header X-Forwarded-Port  $server_port;\n\n          # strip upstream CORS headers to avoid duplicates\n          proxy_hide_header Access-Control-Allow-Origin;\n          proxy_hide_header Access-Control-Allow-Methods;\n          proxy_hide_header Access-Control-Allow-Headers;\n          proxy_hide_header Access-Control-Max-Age;\n          proxy_hide_header Access-Control-Expose-Headers;\n\n          proxy_pass http://localhost:4000/graphql;\n        }\n    }\n```\n\n### Frontend Tests:\n\nFor testing web client is used jest framework in the `/client`\n\n```bash\n\tcd client \u0026\u0026\n\tyarn test\n```\n\nor run to see tests coverage:\n\n```bash\n\tcd client \u0026\u0026\n\tyarn test --coverage\n```\n\n### How to see web page:\n\nopen web browser with link:  `http://localhost:8080` after starting both servers (front and back).\n\n### Author \n\n[meugenom](https://meugenom.com)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeugenom%2Fmeugenom.com","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeugenom%2Fmeugenom.com","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeugenom%2Fmeugenom.com/lists"}