All Projects → bharani91 → Ex Shop

bharani91 / Ex Shop

Licence: mit
Digital goods shop & blog created using Elixir (Phoenix framework)

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to Ex Shop

Cusca
A ghost theme
Stars: ✭ 42 (-80.37%)
Mutual labels:  webpack, blog
Peco
nothing here, move on..
Stars: ✭ 213 (-0.47%)
Mutual labels:  webpack, blog
Ghosttheme Stockholm
👻 📝 ✨ Clean Ghost theme with advanced features & customization.
Stars: ✭ 67 (-68.69%)
Mutual labels:  webpack, blog
Hugo Theme Hello Friend
Pretty basic theme for Hugo that covers all of the essentials. All you have to do is start typing!
Stars: ✭ 586 (+173.83%)
Mutual labels:  webpack, blog
Blog
这是一个Blog, 如果喜欢可以订阅,是Watch, 不是 Star 哈。。。
Stars: ✭ 161 (-24.77%)
Mutual labels:  webpack, blog
Blog
Here is my blog
Stars: ✭ 714 (+233.64%)
Mutual labels:  webpack, blog
Laravel Blog
Laravel 8.0 blog application with Vue.js, Homestead, Horizon, Telescope and Pusher
Stars: ✭ 1,248 (+483.18%)
Mutual labels:  webpack, blog
Myblog
vue + node 实现的一个博客系统
Stars: ✭ 285 (+33.18%)
Mutual labels:  webpack, blog
Awesome Web You Should Know
🌎awesome web you should know
Stars: ✭ 154 (-28.04%)
Mutual labels:  webpack, blog
Eleventy Starter Boilerplate
🚀 Eleventy Starter is production-ready with SEO-friendly for quickly starting a blog. ⚡ Built with Eleventy, ESLint, Prettier, Webpack, PostCSS, Tailwind CSS and Netlify CMS (optional).
Stars: ✭ 139 (-35.05%)
Mutual labels:  webpack, blog
Kails
A Web App like Ruby on Rails with Koa2, Webpack and Postgres
Stars: ✭ 512 (+139.25%)
Mutual labels:  webpack, blog
Docker Web Framework Examples
Example apps that demonstate how to use Docker with your favorite web frameworks.
Stars: ✭ 204 (-4.67%)
Mutual labels:  webpack, phoenix
Fullstack React
A simple, full-stack JavaScript single page app featuring React, Webpack, and Falcor
Stars: ✭ 503 (+135.05%)
Mutual labels:  webpack, blog
Front End Canteen
你的前端食堂,吃好每一顿饭🍥
Stars: ✭ 878 (+310.28%)
Mutual labels:  webpack, blog
Blog
梁少峰的个人博客
Stars: ✭ 4,602 (+2050.47%)
Mutual labels:  webpack, blog
Node Blog
🔥✨ A react blog project base on nodejs, nestjs, mongoose, typescript, react, ant-design,nextjs
Stars: ✭ 69 (-67.76%)
Mutual labels:  webpack, blog
Blog
前端学习笔记
Stars: ✭ 112 (-47.66%)
Mutual labels:  webpack, blog
Imall
基于Laravel5.2,Vue.js1.0的微信商城,用于熟悉 Laravel、Vuejs、Webpack、Gulp 的结合使用,已不维护及更新。(1MB单核基础服务器,浏览请耐心等待图片加载...)
Stars: ✭ 168 (-21.5%)
Mutual labels:  shop, webpack
Vue Blog
🎉 基于vue全家桶 + element-ui 构建的一个后台管理集成解决方案
Stars: ✭ 208 (-2.8%)
Mutual labels:  webpack, blog
V Selectpage
SelectPage for Vue2, list or table view of pagination, use tags for multiple selection, i18n and server side resources supports
Stars: ✭ 211 (-1.4%)
Mutual labels:  webpack

Authentic Pixels

Digital goods shop & blog created using Phoenix Framework (Elixir)

This is the source code for my new website - Authentic Pixels. 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

Here are some screenshots of the admin area.

Authentic Pixels - Product Editor

Authentic Pixels - Dashboard

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 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
  1. Create the database and run the migrations
mix ecto.create
mix ecto.migrate
  1. Create an admin user. You can change the email and password in priv/repo/seeds.exs file.
mix run priv/repo/seeds.exs
  1. 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]
  1. 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
  1. 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] or send me a tweet.

Thanks,

Bharani, Authentic Pixels - Free & Premium Web Resources

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].