Git Product home page Git Product logo

create's People

Contributors

dependabot[bot] avatar fliptation avatar mikearaya avatar pozylon avatar schmidsi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

create's Issues

npm run install-all fails

Hello there,

I would like to try a fresh copy of unchained but it keeps failing when I try to npm run install-all. You can find terminal output and log files below.

npm run install-all

@unchainedshop/[email protected] install-all
npm install && run-p --print-label install:*

added 64 packages, and audited 64 packages in 2s

17 packages are looking for funding
run npm fund for details

found 0 vulnerabilities
[install:engine ]
[install:engine ] > @unchainedshop/[email protected] install:engine
[install:engine ] > cd engine && npm install
[install:engine ]
[install:storefront]
[install:storefront] > @unchainedshop/[email protected] install:storefront
[install:storefront] > cd storefront && npm install
[install:storefront]
[install:engine ] npm ERR! Cannot read property 'matches' of undefined
[install:engine ]
[install:engine ] npm ERR! A complete log of this run can be found in:
[install:engine ] npm ERR! /Users/mahirsenturk/.npm/_logs/2020-11-19T07_43_33_442Z-debug.log
[install:engine ] npm ERR! code 1
[install:engine ] npm ERR! path /Users/mahirsenturk/Developer/your-awesome-ecommerce-project
[install:engine ] npm ERR! command failed
[install:engine ] npm ERR! command sh -c cd engine && npm install
[install:engine ]
[install:engine ] npm ERR! A complete log of this run can be found in:
[install:engine ] npm ERR! /Users/mahirsenturk/.npm/_logs/2020-11-19T07_43_33_545Z-debug.log
ERROR: "install:engine" exited with 1.
npm ERR! code 1
npm ERR! path /Users/mahirsenturk/Developer/your-awesome-ecommerce-project
npm ERR! command failed
npm ERR! command sh -c npm install && run-p --print-label install:*

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/mahirsenturk/.npm/_logs/2020-11-19T07_43_33_716Z-debug.log

Log Files:

2020-11-19T07_43_33_716Z-debug.log

2020-11-19T07_43_33_442Z-debug.log

2020-11-19T07_43_33_545Z-debug.log

Add linter and formatter to the root folder package.json

Currently, there are only helper scripts are added in the root folder package.json when a user creates a full-stack template.
there should be eslint/prettier linter/formater packages included by default so that the environment is set and ready to do actual development out of the box.
it would also be great if, after injecting these packages the script installs these devDependencies before completing the template generation.

so basically:

  • Add linter and formater to package.json
  • install this dependency
  • Add a script to use the linter and formater

Enable Prettier

  • JS/TS files through eslint (both!)
  • CSS/MD files through prettier

Complete Checkout Flow

  • Setup and Integrate Datatrans and Invoice Payment Providers
  • Setup Order Confirmation E-Mail's
  • Add orders and order details pages to profile

User Profile / Account

  •  Finish Password Reset flow
  •  Finish Account page to sign out, change password, manage e-mails

Switching between delivery address and invoice address is slow

  1. Switching has a lag, consider using https://www.apollographql.com/docs/react/performance/optimistic-ui/
  2. Delivery address and billing address are not always set correctly after checkout, this is the requirement:
  • Billing address on order is always required and the delivery plugin will use the billing address when there is no delivery address set. -> Only set the delivery address additionally when these addresses differ from each other

Theming Bundle

  1. Priority:
  • Config-file based (JSON)
  • Set primary, secondary, ternary colors
  • Set a custom font and a custom logo
  • Set title, imprint stuff (phone, location, address), disclaimer content

Theme will be provided via en ENV var, so it's clear on startup how it's themed

  1. Priority:
  • Set general paddings, margins, etc.
  • Configure Header and Footer (Menu, Links, ...)
  • Configure Imprint and Contact content
  • Provide additional custom headers to load (like CSS files, JS files, Google Analytics)

Remove CMS integration

We don't need the CMS integration anymore, maybe an upcoming template will contain a strapi or directus integration.

Findings

  • Menu on Desktop and Tablet does not behave the way it should (UX)
  • "In Cart" not translated
  • "Termin reservieren" is specific for Dynoptic, remove button from create, re-add to dynoptic fork
  • $Unternehmen $Optional & i_have_read_term in Checkout (Bestellung ohne Konto)
  • No effect if I click on "Save" during edit of delivery address when going with a new user (country dropdown appears the first time and unstyled, it seems like country is a required field but it's not communicated)
  • Thank you page: date not formatted based on browser (Intl) and wrong: an dem Sie die Bestellung aufgegeben haben, ist: 1/5/2021 -> should be an dem Sie die Bestellung aufgegeben haben, ist: 1.6.2021
  • Whole "account" page looks like piece of shit and form does not work http://localhost:3000/account :)
  • On "http://localhost:3000/account/change-password" it says "Passwort zurücksetzen / Reset Password" where as it should say "Passwort ändern / Set new Password", error if current password is wrong is not handled
  • "Continue shopping" on cart does redirect to the assortments index page, is that really nice that way?
  • We should show that Datatrans checkout is working fine in the demo and also provide that as a payment option (I put Datatrans credentials for sandbox into Team in 1Password so you can try to configure it localhost and make it work @Mikearaya)

npm run start fails on a fresh clone

after cloning the repository and installing all the dependency inside storefront, i tried running npm run start but it failes with the following error
Screenshot from 2020-04-12 19-27-55

I'm running

  • Ubuntu 19.04
  • npm 6.14.4
  • node 12

Error: There is already a collection named "users"

After a fresh clone/install, I see the following error when navigating to the engine: http://localhost:4010/

Your app is crashing. Here's the latest log:

Started MongoDB.
ENOENT: no such file or directory, open '.env'
2020-12-22T17:43:00.961Z [unchained] info: WorkerDirector -> Registered EXTERNAL [email protected] (External plugin as a placeholder for workers who interact with the system only via GraphQL) {}

You are using the default secret "secret" which is not secure.
Please change it with a strong random token.
[FilesCollection.storagePath] Set to: assets/app/uploads/avatars
/Users/schmidsi/.meteor/packages/meteor-tool/.1.11.1.116t4gt.0c4d++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:280
						throw(ex);
						^

Error: There is already a collection named "users"
    at new Collection (packages/mongo/collection.js:122:15)
    at module (packages/unchained:core-users/db/collections.js:8:22)
    at fileEvaluate (packages/modules-runtime.js:336:7)
    at Module.require (packages/modules-runtime.js:238:14)
    at Module.moduleLink [as link] (/Users/schmidsi/.meteor/packages/modules/.0.15.0.pyq4ir.fh6r9++os+web.browser+web.browser.legacy+web.cordova/npm/node_modules/reify/lib/runtime/index.js:52:22)
    at module (packages/unchained:core-users/db/schema.js:1:411)
    at fileEvaluate (packages/modules-runtime.js:336:7)
    at Module.require (packages/modules-runtime.js:238:14)
    at Module.moduleLink [as link] (/Users/schmidsi/.meteor/packages/modules/.0.15.0.pyq4ir.fh6r9++os+web.browser+web.browser.legacy+web.cordova/npm/node_modules/reify/lib/runtime/index.js:52:22)
    at module (packages/unchained:core-users/users.js:1:26)
    at fileEvaluate (packages/modules-runtime.js:336:7)
    at Module.require (packages/modules-runtime.js:238:14)
    at require (packages/modules-runtime.js:258:21)
    at /Users/schmidsi/Development/@unchainedshop/create/engine/.meteor/local/build/programs/server/packages/unchained_core-users.js:762:15
    at /Users/schmidsi/Development/@unchainedshop/create/engine/.meteor/local/build/programs/server/packages/unchained_core-users.js:767:3
    at /Users/schmidsi/Development/@unchainedshop/create/engine/.meteor/local/build/programs/server/boot.js:401:38
Exited with code: 1
Your application is crashing. Waiting for file change.

Product detail page

  • Title, subtitle, richt text markdown based description
  • Show multiple images in high res in a slider (fullscreen possible)
  • Possibility to add an article to the cart

Cart

  • Adjust quantity
  • Remove an article
  • Jump to an article's detail page
  • Show delivery costs and total
  • After adding a new product to the cart, ask the user if he wants to continue shopping or checkout

Strip to Storefront

For the moment, unchained create should only consist of the frontend part, ramping up a full-blown engine on-premise is something we will try again later, so:

  • Remove engine from this project, move over the good parts into reference
  • Create by default creates a storefront linked to an unchained control instance, unchained control uses the minimal example.
  • If the user wants to have it's own engine, copy the reference from the unchained repo

Categories

3-level category-structure:

  • N Root assortments in Menu, a mega dropdown will show secondary and ternary sub-categories (see publicare.ch)
  • Every category page has a title, subtitle, description and a cover image (needs unchained extension unchainedshop/unchained#357), a breadcrumb, a list of products and a list of sub-categories (for ex. https://publicare.ch/de/shop/ergnzende-produkte-19)
  • Show a breadcrumb on every category page
  • Product lists just show thumbnail and title of articles in that category
  • No sorting or filtering required for the moment

Proof of Concept: Deployment

  • Make a default template for Unchained Control allowing to deploy a storefront with a theming bundle to a subdomain on unchained.rocks
  • Build 2 concrete theming bundles for 2 different opticians, build some demo content (assortments product) and present.

Really implement subscriptions

The current implementation generates subscriptions out of PlanProducts and also stores payment credentials for further charging but it actually fakes the "Subscription" feature and does not automatically generate new orders and therefore does not charge those. Also the subscriptions cannot be terminated:

  • Forward Stored Credentials to Payment Provider Plugins and extend Datatrans so "charge" can take those stored credentials instead of a transactionContext in the case of a "checkoutCart" or "payOrder" mutation allowing server-to-server merchant introduced charging of aliases
  • Allow to actually fetch the stored credential payload with GraphQL so 1-Click-Checkouts can be made possible
  • Implement PaymentCredentials.isValid & markPaymentCredentialsPreferred, also extend Datatrans to enable validation of aliases.
  • New mutation to change the paymentProvider of a subscription
  • New mutation to change the deliveryProvider of a subscription
  • New mutation to change the plan product configuration of a subscription (simulatedPrice effect)
  • Extend orders to contain a referenced subscription and generated period
  • Subscription.orders to see generated orders out of subscription
  • Generate orders and try to auto-charge based on the plan through the queue job
  • Allow an admin to manually pause a subscription when it is overdue (missing payments of recent orders) or automatically through the subscription plugin
  • Enable Notifications for failed auto-charging (if credentials stored)
  • Extend unchained to allow paying a PENDING order manually with a different PaymentProvider.

Checkout / Users

Flow:

  1. Assume guest checkout, allow user to login with his user at any time
  2. Set delivery address and contact information, assume same address for invoicing, allow user to change that
  3. Show summary and allow to choose payment provider and initiate checkout (only Datatrans support for now),
  4. After checkout completion, show a thank you page and an order reference, send a custom e-mail with the confirmation to the user

Guests:

  • Should be possible by providing address, phone, e-mail
  • In the confirmation e-mail, put a link to allow a user to see the status of the order, magic link should work without beeing logged in

Users:

  • Reset
  • Forget password
  • Change password

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.