Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bharani91/ex-shop
Digital goods shop & blog created using Elixir (Phoenix framework)
https://github.com/bharani91/ex-shop
blog elixir phoenix shop webpack
Last synced: 4 days ago
JSON representation
Digital goods shop & blog created using Elixir (Phoenix framework)
- Host: GitHub
- URL: https://github.com/bharani91/ex-shop
- Owner: bharani91
- License: mit
- Created: 2016-09-21T08:42:40.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2016-10-04T05:25:37.000Z (about 8 years ago)
- Last Synced: 2024-08-01T02:11:13.028Z (3 months ago)
- Topics: blog, elixir, phoenix, shop, webpack
- Language: Elixir
- Homepage: https://www.authenticpixels.com
- Size: 1.02 MB
- Stars: 219
- Watchers: 16
- Forks: 24
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - Digital goods shop & blog created using Phoenix framework. (Applications)
- fucking-awesome-elixir - ExShop - Digital goods shop & blog created using Phoenix framework. (Applications)
- awesome-elixir - ExShop - Digital goods shop & blog created using Phoenix framework. (Applications)
README
# Authentic Pixels
**Digital goods shop & blog created using Phoenix Framework (Elixir)**
This is the source code for my new website - [Authentic Pixels](https://www.authenticpixels.com).
Through Authentic Pixels, I plan to deliver high quality free & premium web resources including Bootstrap HTML templates, startup landing pages, UI kits, mockups & themes for Ghost & Wordpress.-----
## Demo & Screenshots
**View the live website here - [Authentic Pixels](https://www.authenticpixels.com)**
Here are some screenshots of the admin area.
![Authentic Pixels - Product Editor](/web/static/assets/images/promo/admin-1.jpg)
![Authentic Pixels - Dashboard](/web/static/assets/images/promo/admin-2.jpg)
-----This project has been a great learning experience for me. Coming from Ruby on Rails, there are a lot of things that are done differently in Elixir/Phoenix and building this app has helped me understand the "Elixir way" of doing things.
Some of the things that this project helped me wrap my head around are -
1. Nested records & associations (e.g: Product has many variants)
2. Handling many-to-many associations and validating them
3. Uploading images
4. Testing
5. Switching to Webpack from Brunch
6. Creating Sitemaps and running a cron task to regularly run the sitemap generation task
7. Deploying (to a Digital Ocean box using Dokku)
8. Sending HTML emails.
9. Separating admin area from frontend using differnt layouts and scopes in `router.ex`I will be writing about this is a lot more detail on [my blog](https://www.authenticpixels.com) soon.
-----------
## Installation
1. Clone the repository and install the dependencies
```
git clone [email protected]:authentic-pixels/exshop.git
cd exshop
mix deps.get
npm install
```2. Create the database and run the migrations
```
mix ecto.create
mix ecto.migrate
```4. Create an admin user. You can change the email and password in `priv/repo/seeds.exs` file.
```
mix run priv/repo/seeds.exs
```5. Add your Cloudinary keys. Create a file called `dev.secret.exs` inside `config` folder with the following contents. Be sure to change the 'name', 'api_key' and 'api_secret' fields.
```
use Mix.Config
config :cloudini,
api_key: "CHANGE_ME",
api_secret: "CHANGE_ME",
name: "CHANGE_ME",
stub_requests: false,
http_options: [timeout: 15000]
```5. Start the server
```
iex -S mix phoenix.server
```
Now visit http://localhost:4000/ to see the frontend version. To access the admin area, visit http://localhost:4000/admin. You can login with the email and password set in `priv/repo/seeds.exs`.------
## Running tests
1. Set up your test database
```
MIX_ENV=test mix ecto.reset
```2. Run all the tests on file change
```
mix test.watch
```-----------
## Todo
- [x] Create sitemaps
- [x] Cron task to update sitemaps frequently
- [ ] Add archives page to blog
- [ ] Create RSS feeds
- [ ] Explore Google AMP versions for product/post pages
- [ ] Write integration tests for admin area--------
## Credits
The Elixir/Phoenix community is really welcoming & responsive. There are tons of nice examples and packages that helped me with my learning. Here are some of the elixir packages that I am using in this project -
- **Comeonin** for password hashing
- **test.watch** for running tests
- **Bamboo** for sending emails
- **Cloudini** for uploading images to Cloudinary
- **Quantum** for running cron tasks
- **Curtail** for truncating HTML snippets
- **XML builder** for generating Sitemaps
- **Kerosene** for pagination--------
For any questions/comments/suggestions, drop me a line at - [[email protected]](mailto:[email protected]) or send me a [tweet](https://twitter.com/bharani91).
Thanks,
Bharani,
**[Authentic Pixels - Free & Premium Web Resources](https://www.authenticpixels.com)**