{"id":16517161,"url":"https://github.com/lucs1590/personal_site","last_synced_at":"2026-07-05T00:01:43.461Z","repository":{"id":42170413,"uuid":"198341368","full_name":"Lucs1590/Personal_Site","owner":"Lucs1590","description":"🌐 💻 Lucas Brito personal website.","archived":false,"fork":false,"pushed_at":"2026-07-03T19:24:21.000Z","size":24232,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-07-03T21:19:20.127Z","etag":null,"topics":["angular","blog","computer-vision","deep-learning","mle","mlops","personal-website","portfolio","portfolio-website"],"latest_commit_sha":null,"homepage":"https://lucasbrito.com.br","language":"TypeScript","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/Lucs1590.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2019-07-23T03:03:13.000Z","updated_at":"2026-07-03T19:22:12.000Z","dependencies_parsed_at":"2023-02-10T10:30:50.986Z","dependency_job_id":"46546336-2cb3-470b-b248-afe302143b84","html_url":"https://github.com/Lucs1590/Personal_Site","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/Lucs1590/Personal_Site","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lucs1590","download_url":"https://codeload.github.com/Lucs1590/Personal_Site/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35139194,"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-07-04T02:00:05.987Z","response_time":113,"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":["angular","blog","computer-vision","deep-learning","mle","mlops","personal-website","portfolio","portfolio-website"],"created_at":"2024-10-11T16:29:06.746Z","updated_at":"2026-07-05T00:01:43.455Z","avatar_url":"https://github.com/Lucs1590.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal Site - Lucas de Brito Silva\n\n[![CodeFactor](https://www.codefactor.io/repository/github/lucs1590/personal_site/badge)](https://www.codefactor.io/repository/github/lucs1590/personal_site)\n\nPersonal portfolio built with Angular, focused on showcasing projects, publications, books, presentations, and professional recommendations. The codebase is also used as a playground for frontend architecture, i18n, accessibility, SEO, and performance practices.\n\nLive site: [https://lucasbrito.com.br](https://lucasbrito.com.br)\n\n## Current Features and Routes\n\n| Feature | Route |\n|---|---|\n| Home | `/home` |\n| Publications | `/publications` |\n| Portfolio | `/portfolio` |\n| Project details | `/portfolio/project/:id` |\n| Books | `/books` |\n| Presentations | `/presentations` |\n| Recommendations | `/recommendations` |\n| Contact | `/contact` |\n| Privacy Policy | `/privacy-policy` |\n| Not Found | `/404` |\n\nThe root route `/` redirects to `/home`.\n\n## Tech Stack\n\n- Angular 21\n- TypeScript\n- Bootstrap 5 + Animate.css + Normalize.css\n- Font Awesome\n- ngx-translate (English and Portuguese)\n- ngx-ui-loader\n- Vercel Analytics + Vercel Speed Insights\n\n## Project Structure\n\n```text\nsrc/\n  app/\n    home/\n    m-home/\n    portfolio/\n    secondary-components/\n    services/\n    models/\n  assets/\n    i18n/\n    static_data/\n```\n\nMain points:\n\n- Feature code lives under `src/app/`.\n- Reusable sections (navbar, footer, books, publications, etc.) are in `src/app/secondary-components/`.\n- Translations are in `src/assets/i18n/en.json` and `src/assets/i18n/pt.json`.\n- Static datasets are in `src/assets/static_data/`.\n\n## Local Development\n\n### Prerequisites\n\n- Node.js (LTS recommended)\n- npm\n- Angular CLI (optional globally, available via scripts)\n\n### Install and Run\n\n```bash\ngit clone git@github.com:Lucs1590/Personal_Site.git\ncd Personal_Site\nnpm install --force\nnpm start\n```\n\n`npm start` uses:\n\n- local Angular configuration (`--configuration=local`)\n- local host binding (`127.0.0.1`)\n- proxy config from `proxy.conf.json`\n\n## Available Scripts\n\n| Command | Description |\n|---|---|\n| `npm start` | Start dev server with local environment and proxy |\n| `npm run build` | Production build (`dist/personal-site`) |\n| `npm run test` | Unit tests with Karma |\n| `npm run lint` | Lint Angular TS/HTML with Angular ESLint |\n| `npm run lint:fix` | Run lint with auto-fixes |\n| `npm run e2e` | End-to-end tests with Protractor |\n| `npm run release` | Standard-version release automation |\n\n## Environment and Secrets\n\nThis project uses IP geolocation in the API service.\n\n- Local development variables are defined in `src/environments/environment.local.ts`.\n- Production uses `src/environments/environment.prod.ts` with `${IPGEOLOCATION_API_KEY}` placeholder.\n- During Vercel builds, `build-vercel.sh` replaces the placeholder with the value from the `IPGEOLOCATION_API_KEY` environment variable.\n\nSee `IPGEOLOCATION_SETUP.md` for setup details.\n\n## Deployment\n\nDeployment target: Vercel.\n\n- Vercel build command comes from `vercel.json` and runs `build-vercel.sh`.\n- Output directory is `dist/personal-site/browser`.\n\n## CI and Automation\n\nGitHub Actions workflows currently include:\n\n- CodeQL analysis (`.github/workflows/codeql-analysis.yml`)\n- Lighthouse CI checks (`.github/workflows/lighthouse.yml`)\n- Automated books data refresh (`.github/workflows/update-books.yml`)\n- First-time contributor greeting (`.github/workflows/greatings.yml`)\n\n## SEO and Documentation\n\nSEO and metadata implementation notes are available in:\n\n- `docs/SEO_METADATA_GUIDE.md`\n- `docs/SEO_IMPLEMENTATION_SUMMARY.md`\n\n## Contributing\n\nContributions are welcome.\n\n1. Open an issue to discuss changes when possible.\n2. Create a branch and submit a pull request.\n3. Keep commits clear and scoped.\n\n## License\n\nThis project is licensed under the MIT License.\n\nSee `LICENCE` for details.\n\n## Disclaimer\n\nYou can use this repository as inspiration, but please avoid direct copy/paste of personal content (texts, images, profile data, and links) without adaptation and attribution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucs1590%2Fpersonal_site","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucs1590%2Fpersonal_site","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucs1590%2Fpersonal_site/lists"}