This is a demo Contacts Application built with the Ash Framework, Phoenix, React, and Inertia, featuring email/password authentication, full CRUD operations, pagination, search functionality, and CSV import/export capabilities.
contactly_ash.mp4
- Email/Password Authentication: Complete authentication system with user registration, login, email confirmation, password reset, and forgot password functionality using Ash Authentication.
- CRUD Operations: Create, read, update, and delete contacts.
- Pagination: Efficiently navigates through contact lists.
- Search: Quickly find contacts using the search feature.
- CSV Import/Export: Import and export contacts via CSV files.
- Modern Frontend: Built with React and Inertia.js for a seamless single-page application experience.
Before setting up the application, ensure you have the following installed:
- Elixir: Version 1.14 or later. Installation Guide
- Erlang: Version 24 or later. Installation Guide
- Node.js: Version 16 or later. Installation Guide
- PostgreSQL: Ensure it's installed and running. Installation Guide
git clone https://github.com/joangavelan/contactly_ash.git
cd contactly_ashFetch and install the necessary Elixir dependencies:
mix deps.getInstall Node.js dependencies for the frontend:
cd assets
npm install
cd ..Configure your database settings in config/dev.exs. Ensure the username, password, hostname, and database fields match your PostgreSQL setup:
config :contactly, Contactly.Repo,
username: "your_db_username",
password: "your_db_password",
hostname: "localhost",
database: "contactly_dev",Set up the database by running:
mix ecto.create
mix ecto.migrateStart the Phoenix server:
mix phx.serverThe app will be accessible at http://localhost:4000.
Contributions are welcome! Feel free to open an issue or submit a pull request with your improvements or feedback.