GithubHelp home page GithubHelp logo

gacelita / ventas Goto Github PK

View Code? Open in Web Editor NEW
122.0 14.0 16.0 2.73 MB

Clojure ecommerce platform

License: Eclipse Public License 1.0

Clojure 91.51% CSS 8.36% Shell 0.03% Dockerfile 0.02% JavaScript 0.08%
clojure clojurescript clojure-spec websockets ecommerce re-frame reagent reactjs datomic semantic-ui-react

ventas's People

Contributors

gacelita avatar vemv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ventas's Issues

Deployment documentation

Publish the internal ansible playbook used for the demo server, and document deployment in general.

Customers CRUD

Customers should be listed properly in the administration.

Realtime requests

WS API requests should have an option to be "realtime", in the sense that they should return results as they are available (think Datomic or ES queries). This is partially implemented but not used or finished. Quite trivial to be honest, just needs to be used somewhere (most likely, the administration).

Checkout page

Handle login/register for unregistered users, handle entering addresses, handle choosing a shipping method, handle choosing a payment method...surely you've seen this many times :)

Review and finish the user profile pages

Most likely the user profile pages in the frontoffice are broken in one way or another. Fix them and add the missing pieces. Take a look at existing and popular ecommerce stores to get an idea of what's missing.

Customer support system

Allow users to ask questions to the store.
Task includes administration section (list pending questions and past threads) and frontoffice section (customer support button that sends the user to the customer support page, which has a form that lets him/her contact the store).
See other ecommerce platforms for references.

Product variations CRUD

Allow creating product variations from the product page. Allow listing the product variations for a given product. Etc

Data importing and exporting

As a bare minimum this should support importing and exporting products to/from Prestashop, Magento and WooCommerce. Not familiar with Shopify but it would be a good idea too.

User reviews system

Reviews should contain "title", "description", "images" and "rating" fields. The plugin should show the reviews for a product in the product page, and allow the user to do basic CUD operations (create, update, delete) on their own reviews. An administration section should be added for listing the reviews. Reviews should be able to be moderated by a privileged user.

Better mobile experience

Make what's currently developed for the :clothing theme look nice in a typical smartphone (mine's a Samsung Galaxy Grand Prime if you need a reference).

unable to start REPL due to Error loading cider.piggieback

2019-03-15 09:13:54.663 [main] INFO  ventas.config - Loading configuration
2019-03-15 09:13:54.680 [main] DEBUG ventas.config - {:database {:url datomic:free://localhost:4334/ventas}, :server {:port 3450, :host localhost}, :elasticsearch {:index ventas, :port 9200, :host 127.0.0.1}, :auth-secret CHANGEME}
Error loading cider.piggieback: java.lang.RuntimeException: No such var: ieval/queue-eval, compiling:(cider/piggieback.clj:190:3)
Exception in thread "main" java.lang.RuntimeException: Unable to resolve var: cider.piggieback/wrap-cljs-repl in this context, compiling:(/private/var/folders/2g/191qqhsn24769l06q1jzy7tw0000gn/T/form-init1530137244909603440.clj:1:2980)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7010)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3881)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7005)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3881)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7005)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.access$300(Compiler.java:38)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6368)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6100)
	at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5460)
	at clojure.lang.Compiler$FnExpr.parse(Compiler.java:4022)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7001)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.eval(Compiler.java:7059)
	at clojure.lang.Compiler.eval(Compiler.java:7052)
	at clojure.lang.Compiler.eval(Compiler.java:7052)
	at clojure.lang.Compiler.eval(Compiler.java:7052)
	at clojure.lang.Compiler.load(Compiler.java:7514)
	at clojure.lang.Compiler.loadFile(Compiler.java:7452)
	at clojure.main$load_script.invokeStatic(main.clj:278)
	at clojure.main$init_opt.invokeStatic(main.clj:280)
	at clojure.main$init_opt.invoke(main.clj:280)
	at clojure.main$initialize.invokeStatic(main.clj:311)
	at clojure.main$null_opt.invokeStatic(main.clj:345)
	at clojure.main$null_opt.invoke(main.clj:342)
	at clojure.main$main.invokeStatic(main.clj:424)
	at clojure.main$main.doInvoke(main.clj:387)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Unable to resolve var: cider.piggieback/wrap-cljs-repl in this context
	at clojure.lang.Util.runtimeException(Util.java:221)
	at clojure.lang.Compiler$TheVarExpr$Parser.parse(Compiler.java:720)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	... 36 more
Subprocess failed
REPL server launch timed out.

Seeding issues

Hiya,

(migrate-and-reindex!) works partially on my machine.

Here's a repl session dump:

https://gist.githubusercontent.com/vemv/f1ef0f581e662718417d0837967e5a12/raw/95ebeaef691495703bda6148681f21540f0a796f/-

Two highlights:

  • DEBUG [org.elasticsearch.client.RestClient:59] - request [DELETE http://127.0.0.1:9200/ventas] returned [HTTP/1.1 404 Not Found] (migrate-and-reindex!)
  • INFO [ventas.database.seed:88] - Installing plugin :slider
    clojure.lang.ExceptionInfo: Response Exception

Environment context:

  • No Docker
  • running plain transactor ~/ventas/datomic/config/transactor.properties and elasticsearch with no prior setup other than a stock install.

What could it be going on?

Multisite capabilities

Allow creating many independent stores with just one ventas instance.
Each should have its database and its Elasticsearch index.

  • Get the host from the ring request
  • The configuration should have a :multisite key, which should list the configurations for the available sites.
  • Use the database and index from the corresponding configuration to serve the request.

Stock management

ventas should have the option to automatically handle the stock when an order is confirmed. Right now there isn't even a stock field in the products :).
Caution: this should take into account the product variations.

Administration dashboard

The dashboard should show items that need attention from the store's owner: pending customer questions, pending reviews to approve, pending orders to confirm / ship, and products that are marked as shipped but haven't arrived yet (whenever tracking info is available)

Background tasks in the administration

In the administration, there should be a section showing the current state of the background tasks.

Current background tasks:

  • Elasticsearch indexing
  • Image resizing
  • Prerendering

The administration section should list these tasks and allow:

  • Seeing the number of items processed vs the total number of items
  • Resetting (removing anything already processed)
  • Starting and stopping

Plugin system

Although there are plugins, they don't do anything. They should allow conditional activation of optional features (endpoints, entity types...). The administration should allow this. The fixtures and migrations of the plugins should be handled automatically.

Theme system

Remove :clothing theme hardcoding. Allow changing the current theme both in development and in production.

Extract things from this damn monolith

Ordered by feasibility / amount of work needed

In the Clojure side:

  • the timbre logger, which is very nice (ventas.logging)
  • ventas.database.entity pseudo-orm-thing (possibly taking things from the other ventas.database namespaces)
  • utils.images but crediting optimus-img-transform for the foundational work

In both sides:

  • server.ws, which provides a req/response websocket abstraction

In the ClojureScript side:

  • ventas.routes bidi generator
    UPDATE: https://github.com/JoelSanchez/ventas-bidi-syntax
  • components.notificator
  • components.form, but it needs to handle more inputs/use-cases
  • the slider component, but it needs to be a lot better
  • the chartjs wrapper, but it needs to be a lot better
  • the swagger-like thing (ventas.plugins.api)

For the future:

  • datadmin idea
  • the stripe component/integration

Websocket web tool - CSS issues

Right now there are at least 2 CSS issues with the websocket web tool:

  • Responses that are too long don't overflow correctly (click on products.list and see what happens)
  • Spec documentation shows \n instead of newlines

I'm leaving this issue undone for now, as it's very beginner friendly.

Zoom component

Add or create a zoom component for the main image in the product page, similar to other online stores

Improve the activity log

Right now it's useless, as it only lists entity transaction events. The activity log should register more events and describe properly the ones it already registers.

For entity creation, a link to edit the entity could be provided, along with what data it included when it was created.

Same for updates: show what was updated. Show the time when this happened.

Both creation and update events should be far more semantic. If an user is created, is it because a user was registered? Or something else?

Orders CRUD

Simply, orders should be listed properly in the administration.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.