{"id":23858973,"url":"https://github.com/joangavelan/contactly","last_synced_at":"2025-08-01T15:43:15.001Z","repository":{"id":270740728,"uuid":"911324714","full_name":"joangavelan/contactly","owner":"joangavelan","description":"A demo Contacts Application built with the Phoenix Framework","archived":false,"fork":false,"pushed_at":"2025-01-28T17:37:08.000Z","size":77,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-21T10:34:35.654Z","etag":null,"topics":["crud","ecto","elixir","oauth2","phoenix","phoenix-liveview","postgresql","real-time","websockets"],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/joangavelan.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}},"created_at":"2025-01-02T18:45:56.000Z","updated_at":"2025-07-09T12:49:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"76cc421f-0f48-4aee-a918-d4ebc6ae558e","html_url":"https://github.com/joangavelan/contactly","commit_stats":null,"previous_names":["joangavelan/contactly"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/joangavelan/contactly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joangavelan%2Fcontactly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joangavelan%2Fcontactly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joangavelan%2Fcontactly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joangavelan%2Fcontactly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joangavelan","download_url":"https://codeload.github.com/joangavelan/contactly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joangavelan%2Fcontactly/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268254083,"owners_count":24220747,"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","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"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":["crud","ecto","elixir","oauth2","phoenix","phoenix-liveview","postgresql","real-time","websockets"],"created_at":"2025-01-03T03:28:57.843Z","updated_at":"2025-08-01T15:43:14.955Z","avatar_url":"https://github.com/joangavelan.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Contactly\n\nThis is a demo Contacts Application built with the Phoenix Framework, featuring OAuth2 authentication via Google, full CRUD operations, pagination, search functionality, and CSV import/export capabilities.\n\n## Features\n\n- **OAuth2 Authentication**: Utilizes the Assent library for Google authentication.\n- **CRUD Operations**: Create, read, update, and delete contacts.\n- **Pagination**: Efficiently navigates through contact lists.\n- **Search**: Quickly find contacts using the search feature.\n- **CSV Import/Export**: Import and export contacts via CSV files.\n\n## Prerequisites\n\nBefore setting up the application, ensure you have the following installed:\n\n- **Elixir**: Version 1.14 or later. [Installation Guide](https://elixir-lang.org/install.html)\n- **Erlang**: Version 24 or later. [Installation Guide](https://elixir-lang.org/install.html)\n- **PostgreSQL**: Ensure it's installed and running. [Installation Guide](https://www.postgresql.org/download/)\n\n## Setup Instructions\n\n### Clone the Repository\n\n```bash\ngit clone https://github.com/joangavelan/contactly.git\ncd contactly\n```\n\n### Install Dependencies\n\nFetch and install the necessary dependencies:\n\n```bash\nmix deps.get\n```\n\n### Configure Environment Variables\n\nThe application requires specific environment variables for Google OAuth2 authentication. Create a file named `.env` in the project root and add the following variables:\n\n```bash\nexport GOOGLE_CLIENT_ID=your_google_client_id\nexport GOOGLE_CLIENT_SECRET=your_google_client_secret\nexport GOOGLE_REDIRECT_URI=http://localhost:4000/auth/google/callback\n```\n\nReplace your_google_client_id and your_google_client_secret with your actual Google OAuth2 credentials. The GOOGLE_REDIRECT_URI should match the redirect URI configured in your Google Developer Console.\n\n### Database Configuration\n\nConfigure your database settings in `config/dev.exs`. Ensure the `username`, `password`, `hostname`, and `database` fields match your PostgreSQL setup:\n\n```elixir\nconfig :contactly, Contactly.Repo,\n  username: \"your_db_username\",\n  password: \"your_db_password\",\n  hostname: \"localhost\",\n  database: \"contactly_dev\",\n```\n\n### Create and Migrate the Database\n\nSet up the database by running:\n\n```bash\nmix ecto.create\nmix ecto.migrate\n```\n\n### Start the Server\n\nStart the Phoenix server while loading the `.env` file using the following command:\n\n```bash\nsource .env \u0026\u0026 mix phx.server\n```\n\nThe `source .env` command ensures your environment variables are loaded, and `mix phx.server` starts the application. The app will be accessible at [http://localhost:4000](http://localhost:4000).\n\n## Contributing\n\nContributions are welcome! Feel free to open an issue or submit a pull request with your improvements or feedback.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoangavelan%2Fcontactly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoangavelan%2Fcontactly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoangavelan%2Fcontactly/lists"}