{"id":42973448,"url":"https://github.com/alextrandev/countries_app_react_bootstrap","last_synced_at":"2026-01-31T01:19:47.106Z","repository":{"id":256903703,"uuid":"853248599","full_name":"alextrandev/countries_app_react_bootstrap","owner":"alextrandev","description":"Full-stack countries info app with React, Redux, Express.js and Bootstrap. The app features authentication, AI integration and databases.","archived":false,"fork":false,"pushed_at":"2025-01-16T09:41:37.000Z","size":2099,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T06:13:55.388Z","etag":null,"topics":["bootstrap","express","openai","react","redux"],"latest_commit_sha":null,"homepage":"https://countries.alextran.dev/","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/alextrandev.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":"2024-09-06T09:27:24.000Z","updated_at":"2025-01-16T09:41:36.000Z","dependencies_parsed_at":"2024-09-13T19:38:02.147Z","dependency_job_id":null,"html_url":"https://github.com/alextrandev/countries_app_react_bootstrap","commit_stats":null,"previous_names":["alextrandev/countries_app_react_bootstrap"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alextrandev/countries_app_react_bootstrap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextrandev%2Fcountries_app_react_bootstrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextrandev%2Fcountries_app_react_bootstrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextrandev%2Fcountries_app_react_bootstrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextrandev%2Fcountries_app_react_bootstrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alextrandev","download_url":"https://codeload.github.com/alextrandev/countries_app_react_bootstrap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alextrandev%2Fcountries_app_react_bootstrap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28926052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T22:32:35.345Z","status":"ssl_error","status_checked_at":"2026-01-30T22:32:31.927Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["bootstrap","express","openai","react","redux"],"created_at":"2026-01-31T01:19:46.438Z","updated_at":"2026-01-31T01:19:47.093Z","avatar_url":"https://github.com/alextrandev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Countries app with React and Bootstrap\nA full-stack countries info app with React, Express.js and Bootstrap. The app features authentication, AI integration and databases.\n\nAfter register, user can view, search for all countries, save some countries as favourites and browse various infos e.g: flags, weather, map, etc. There is AI integration powered by Open AI that gives users interesting facts when asked.\n\n## Functions:\n### Authentication\n- Fast and secure login\n- User info like favourites countries is store in database\n\n### Countries page\n- View all 250 countries\n- Filter countries based on continent\n- Search for a specific country\n- Pagination for faster load time\n\n### Favourites page\n- View saved countries\n- Add or remove countries from favourites\n\n### Single country page\n- View country flag, coat of arms and their description\n- Ask Open AI for interesting fact about the country\n- Various infos about the country\n- Current weather\n- A map to learn more about country geography\n\n## Technologies used\n\n### Language:\n- Javascript\n\n### Frameworks:\n- Front-end: React with Vite\n- Back-end: Express.js, Serverless\n- State management: Redux, Redux Toolkit\n- Styling: Bootstrap\n\n### Libraries:\n- Firebase\n- Leaflet\n- Openai\n- Toastify\n\n### APIs:\n- Rest countries\n- Open AI\n- Firebase firestore\n- Open weather\n\n## Setup and usage\n\n### Live page [here](https://countries.alextran.dev/)\n\n### To host project locally\n\n1. Without backend (some function will not work properly)\n- Clone the project: `git clone https://github.com/alextrandev/countries_app_react_bootstrap.git`\n- Change working directory `cd countries_app_react_bootstrap`\n- Install dependencies `npm install`\n- Add your own Firebase and OpenWeather API key to the .env file in root level in this format:\n```sh\nVITE_OPENWEATHER_API_KEY=your_key_here\nVITE_FIREBASE_API_KEY=your_key_here\n```\n- Serve project in local host `npm run dev`\n- Check the console for the port the project is running in\n\n2. With backend\n_Require installing Netlify localy for testing in dev environment_\n- Install Netlify CLI `npm install -g netlify-cli`\n- Add your own Firebase, Open Weather and OpenAI API key to the .env file in root level in this format:\n```sh\nOPENAI_API_KEY=your_key_here\nVITE_OPENWEATHER_API_KEY=your_key_here\nVITE_FIREBASE_API_KEY=your_key_here\n```\n- Start local Netlify dev server `npm run server`\n- Check the console for the port the project is running in\n\n\n## Preview\n### Countries page\n![countries preview](./public/gifs/countries-page-preview.gif)\n\n### Single country page\n![single country preview](./public/gifs/single-countries-preview.gif)\n\n## Authors and acknowledgment\n\nThis is a learning project given by my React teacher at Business College Helsinki as part of the React Advance course\n\nCredit to [Martin Holland](https://github.com/martin-holland) for the fantastic lessons and guidances with this project\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falextrandev%2Fcountries_app_react_bootstrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falextrandev%2Fcountries_app_react_bootstrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falextrandev%2Fcountries_app_react_bootstrap/lists"}