Giter Site home page Giter Site logo

syliuscustomoptionsplugin's Introduction

Customer Options

With this plugin the customer can add additional info to the product like so: Price import forms Price import forms

Installation

  • Run composer require brille24/sylius-customer-options-plugin.

  • Register the Plugin in your config/bundles.php:

return [
    //...
    Brille24\SyliusCustomerOptionsPlugin\Brille24SyliusCustomerOptionsPlugin::class => ['all' => true],
];
  • Add the config.yml to your local config/packages/_sylius.yaml:
imports:
    ...
    - { resource: "@Brille24SyliusCustomerOptionsPlugin/Resources/config/app/config.yml" }
  • Add the routing.yml to your local config/routes.yaml:
brille24_customer_options:
    resource: "@Brille24SyliusCustomerOptionsPlugin/Resources/config/app/routing.yml"

sylius_shop_ajax_cart_add_item:
  path: ajax/cart/add
  methods: [POST]
  defaults:
    _controller: sylius.controller.order_item::addAction
    _format: json
    _sylius:
      factory:
        method: createForProductWithCustomerOption
        arguments: [expr:notFoundOnNull(service('sylius.repository.product').find($productId))]
      form:
        type: Sylius\Bundle\CoreBundle\Form\Type\Order\AddToCartType
        options:
          product: expr:notFoundOnNull(service('sylius.repository.product').find($productId))
      redirect:
        route: sylius_shop_cart_summary
        parameters: {}
      flash: sylius.cart.add_item

sylius_shop_partial_cart_add_item:
  path: cart/add-item
  methods: [GET]
  defaults:
    _controller: sylius.controller.order_item::addAction
    _sylius:
      template: $template
      factory:
        method: createForProductWithCustomerOption
        arguments: [expr:notFoundOnNull(service('sylius.repository.product').find($productId))]
      form:
        type: Sylius\Bundle\CoreBundle\Form\Type\Order\AddToCartType
        options:
          product: expr:notFoundOnNull(service('sylius.repository.product').find($productId))
      redirect:
        route: sylius_shop_cart_summary
        parameters: {}
  • Copy the template overrides from the plugin directory
From: [shop_dir]/vendor/brille24/sylius-customer-options-plugin/test/Application/templates
To: [shop_dir]/templates

In order to use the customer options, you need to override the product and order item.

use Brille24\SyliusCustomerOptionsPlugin\Entity\ProductInterface;
use Brille24\SyliusCustomerOptionsPlugin\Traits\ProductCustomerOptionCapableTrait;
use Sylius\Component\Core\Model\Product as BaseProduct;

class Product extends BaseProduct implements ProductInterface {
    use ProductCustomerOptionCapableTrait {
        __construct as protected customerOptionCapableConstructor;
    }
    
     public function __construct()
    {
        parent::__construct();

        $this->customerOptionCapableConstructor();
    }
    // ...
}
use Brille24\SyliusCustomerOptionsPlugin\Entity\OrderItemInterface;
use Brille24\SyliusCustomerOptionsPlugin\Traits\OrderItemCustomerOptionCapableTrait;
use Sylius\Component\Core\Model\OrderItem as BaseOrderItem;

class OrderItem extends BaseOrderItem implements OrderItemInterface
{
    use OrderItemCustomerOptionCapableTrait {
        __construct as protected customerOptionCapableConstructor;
    }

    public function __construct()
    {
        parent::__construct();

        $this->customerOptionCapableConstructor();
    }
    // ...
}
  • If you also want default data you need to copy over the brille24_sylius_customer_options_plugin_fixtures.yaml file from the package directory and run
bin/console sylius:fixtures:load
  • Finally, generate migrations, update the database and update the translations:
bin/console doctrine:migrations:diff
bin/console doctrine:migrations:migrate
bin/console translation:update

Things to consider

  • Saving files as customer defined values as the values are currently stored as a string in the database

Developing

When developing it is recommended to use git hooks for this just copy the docs/pre-commit to .git/hooks/pre-commit and make it executable. Then you will check your codestyle before committing.

Usage

Documentation on how to use the plugin can be found here.

syliuscustomoptionsplugin's People

Contributors

adamterepora avatar ancarda avatar antiseptikk avatar bartoszpietrzak1994 avatar bitbager avatar dieterholvoet avatar firstred avatar jakobtolkemit avatar jeromin avatar joppedc avatar lchrusciel avatar loocos avatar lsmith77 avatar mamazu avatar marek-pietrzak-tg avatar mrmadhat avatar pamil avatar pjedrzejewski avatar prometee avatar radnok avatar rvanginneken avatar seizan8 avatar shochdoerfer avatar stefandoorn avatar sylfrid avatar teohhanhui avatar xaviermarchegay avatar zales0123 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

syliuscustomoptionsplugin's Issues

Incompatible with doctrine/dbal 3.1.3

I just ran a composer update and my doctrine/dbal was updated from version 2.13.4 to 3.1.3.
Afterwards, the customer options plugin was not running any more, because the plugin uses a depreciated field type "json_array", which was removed in dbal 3.
Please either replace the json_array type or insert a depencency for dbal 2 in the composer file.

Thanks!

Viewing customer option groups table

When you create a customer option and you call the backend to display the customer options in a table, the rendering throws an exception: Notice: undefined exception customerOptionGroup for the Sylius/Bundle/UiBundle/Resources/views/Grid/_default.html.twig

Required option does not work

Version: 2.7.6

I set an option required on the admin side and on the frontend there is a red * next to the label, but I can add product to the cart without selecting any report.


image
image

Validator for Groups and Options

We need programmable validators for groups and options:

For groups, the relationship between the options of a group should be validated.
Example: If option1 is greater than 0, option2 must be 0.
For options, the validator should check the single value.

Both types of validator should be applied to an order item

renderPrice macro displays percent values incorrectly

The renderPrice macro in all/_orderItem.html.twig displays the percentage like:
( {{ orderItem.percent }} % )

So, if the value is 0.05 it's displayed as 0.05%, when it actually should be 5%. The percentages are correct in the form of the product show page though.
The percent should be multiplied by 100.

Custom Adjustments do not work with customer_option type

I created a Subscriber like in the "Creating a custom adjustment" chapter. However, if I'm using CustomerOptionRecalculator::CUSTOMER_OPTION_ADJUSTMENT as type then my adjustments are not saved to the DB. They do get added in my subscriber. Just somehow they get removed again, I guess. And hence never make it to the DB.

As soon as I use my own type tho Booom! They are saved.

Plugin version 2.14.1

Fixing the asset path

When installing the assets it may occur that the asset paths don't match the bundles generated path.

No works Adding product/order item To Cart

Hello, following the installation of the bundle Brille24/SyliusCustomOptionsPlugin

When adding products to the cart. I can't add 2 different products, automatically when adding the second product to the cart it adds a quantity on the first product.
Would anyone have this problem?
My products for the testing doesn't have a CustomOptions. They are basic product, one with a variants and one without variants.
When I disable the bundle, everything comes back to normal.
I doesn't have any errors in log

Deprecated namespaces formats

Hello. The plugin still has somes deprecated templates namespace formats with colons (like SyliusUiBundle:Grid/Field:rawLabel.html.twig instead of @SyliusUi/Grid/Field/rawLabel.html.twig).
It throws exceptions with SF5. I'll submit a new PR this week for that.

Saving product page

When trying to save a product with customer option group and customer option value price overrides it throws an exception: Call to member function add() on null in the ProductCustomerOptionCapabableTrait.php line 100.

Overriding CustomerOptionValue

Is there a possibility to override Entity?
I want to add one more column to the "brille24_customer_option_value" table

I created a new entity that extends CustomerOptionValue

/**
 * @ORM\Entity
 * @ORM\Table(name="brille24_customer_option_value")
 */
class CustomerOptionValue extends BaseCustomerOptionValue
{
    /**
     * @ORM\Column(type="integer", name="external_id", nullable=true)
     */
    protected $externalId;
}

Changed model class to the new one config/packages/resources.yml

sylius_resource:
    resources:
        brille24.customer_option_value:
            classes:
                model: \App\Entity\CustomerOption\CustomerOptionValue
                repository: Brille24\SyliusCustomerOptionsPlugin\Repository\CustomerOptionValueRepository
                factory: Brille24\SyliusCustomerOptionsPlugin\Factory\CustomerOptionValueFactory
                form: Brille24\SyliusCustomerOptionsPlugin\Form\CustomerOptionValueType
            translation:
                classes:
                    model: Brille24\SyliusCustomerOptionsPlugin\Entity\CustomerOptions\CustomerOptionValueTranslation
                    form: Brille24\SyliusCustomerOptionsPlugin\Form\CustomerOptionValueTranslationType

but when run php bin/console doctrine:migrations:diff I am getting:

The table with name 'sylius.brille24_customer_option_value' already exists.

Deprecation in AddToCartTypeExtension

We got this message with Sylius 1.7 in master branch.

Deprecated: Non-static method Brille24\SyliusCustomerOptionsPlugin\Form\Extensions\AddToCartTypeExtension::getExtendedTypes()

ProductFixture overwritten and using a different Factory

/config/app/services/fixtures.xml

<service
        class="Brille24\SyliusCustomerOptionsPlugin\Fixture\ProductFixture"
        id="sylius.fixture.product"
>
    <argument type="service" id="doctrine.orm.default_entity_manager"/>
    <argument type="service" id="brille24.factory.product"/>
    <tag name="sylius_fixtures.fixture" />
</service>

This causes problems if another bundle would do the same. The ProductFixture would be overwritten twice.
For the Factory, I think it would be better if the sylius ProductExampleFactory was decorated. Is there a reason it is not?
The Fixture seems a bit trickier to me. I think it would be better to tell the user to overwrite the ProductFixture himself. Ideally there would be a static function or trait he could call for the configureResourceNode of brille24. So he would get later updates automatically. Or I guess, you could also decorate the ProductFixture? Never tried that, though I don't see why that wouldn't work.

Side note: the brille24 ProductFactory also has a useless configureOptions method, it never gets called.

master is ahead of 2.4 tag

I don't know if this is intentional, but the latest tag (2.4) is behind master by one commit. This has the effect of being unable to install this plugin with Sylius 1.7 with the published instructions, because the 2.4 tagged branch still has the exclude instruction for 1.7 in its composer.json file. I worked around it for now by forcing composer to install the master branch.

Installation in Sylius 1.7 project fails

Trying to install in a Sylius 1.7 project fails:

Using version ^2.4 for brille24/sylius-customer-options-plugin
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - brille24/sylius-customer-options-plugin 2.4 requires sylius/sylius ^1.6 -> satisfiable by sylius/sylius[v1.7.4, v1.7.0, v1.7.1, v1.7.2, v1.7.3].
    - brille24/sylius-customer-options-plugin 2.4 conflicts with sylius/sylius[v1.7.4].
    - brille24/sylius-customer-options-plugin 2.4 conflicts with sylius/sylius[v1.7.0].
    - brille24/sylius-customer-options-plugin 2.4 conflicts with sylius/sylius[v1.7.1].
    - brille24/sylius-customer-options-plugin 2.4 conflicts with sylius/sylius[v1.7.2].
    - brille24/sylius-customer-options-plugin 2.4 conflicts with sylius/sylius[v1.7.3].
    - brille24/sylius-customer-options-plugin 2.4 conflicts with sylius/sylius[v1.7.4].
    - brille24/sylius-customer-options-plugin 2.4 conflicts with sylius/sylius[v1.7.4].
    - Installation request for brille24/sylius-customer-options-plugin ^2.4 -> satisfiable by brille24/sylius-customer-options-plugin[2.4].


Installation failed, reverting ./composer.json to its original content.

It's a quite confusing error and I am not sure what exactly is the issue. Is this plugin not yet compatible with Sylius 1.7?

Fix Doctrine mapping

Running bin/console doctrine:mapping:info produces the following error:

Warning: simplexml_load_string(): Entity: line 31: parser error : Opening and ending tag mismatch: mapped-superclass line 2 and entity

The issue is in the following files:

sylius-customer-options-plugin/src/Resources/config/doctrine/CustomerOptions.Validator.Constraint.orm.xml
sylius-customer-options-plugin/src/Resources/config/doctrine/CustomerOptions.Validator.Condition.orm.xml

Symfony Exception - TypeError

I get the following exception when visiting a Product page, after installing the plugin.

Argument 1 passed to Brille24\SyliusCustomerOptionsPlugin\Form\Extensions\AddToCartTypeExtension::getConstraints() must be an instance of Brille24\SyliusCustomerOptionsPlugin\Entity\ProductInterface, instance of App\Entity\Product\Product given

Sylius Version: 1.4.2
Symfony Version: 4.2.5

Any help would be greatly appreciated.

Handle annotations entity config

I'm experiencing a bug after the migration.
It seems that the plugin doesn't handle the annotations for the entity config.
In my project I use annotations and this error is displaying :

The association Brille24\SyliusCustomerOptionsPlugin\Entity\CustomerOptions\CustomerOptionGroup#products refers to the owning side field App\Entity\Product\Product#customerOptionGroup which does not exist.

Can you guys please help me ?

Customer option File resume to "This value is not valid"

Hi there,

I'm wondering if you guys have also the same error when adding a product to cart with customer option (File type) with Sylius >= v1.10
it say a form error : The value is not valid.

I was able to fix it by replacing this line in Form\product_theme.html.twig :
<input type="hidden" name="{{full_name ~ '[data]' }}" id="{{ id ~ '_data'}}" />
To
<input type="hidden" name="{{full_name }}" id="{{ id ~ '_data'}}" />

If yes, I will do a PR to fix it.
Thanks for your feedback :)

There is no extension able to load the configuration for "brille24_customer_options"

Setting up this plugin I'm getting the following error:
There is no extension able to load the configuration for "brille24_customer_options" (in "D:\xampp\htdocs\storewallet\config/packages/routing.yaml"). Looked for namespace "brille24_customer_options", found ""framework", "monolog", "security", "swiftmailer", "twig", "doctrine", "doctrine_cache", "sylius_order", "sylius_money", "sylius_currency", "sylius_locale", "sylius_product", "sylius_channel", "sylius_attribute", "sylius_taxation", "sylius_shipping", "sylius_payment", "sylius_mailer", "sylius_promotion", "sylius_addressing", "sylius_inventory", "sylius_taxonomy", "sylius_user", "sylius_customer", "sylius_ui", "sylius_review", "sylius_core", "sylius_resource", "sylius_grid", "winzou_state_machine", "sonata_core", "sonata_block", "sonata_intl", "bazinga_hateoas", "jms_serializer", "fos_rest", "knp_gaufrette", "knp_menu", "liip_imagine", "payum", "stof_doctrine_extensions", "white_october_pagerfanta", "doctrine_migrations", "doctrine_fixtures", "sylius_fixtures", "sylius_payum", "sylius_theme", "sylius_admin", "sylius_shop", "fos_oauth_server", "sylius_admin_api", "debug", "web_profiler", "fidry_alice_data_fixtures", "nelmio_alice", "maker", "brille24_sylius_customer_options"" in D:\xampp\htdocs\storewallet\config/packages/routing.yaml (which is loaded in resource "D:\xampp\htdocs\storewallet\config/packages/routing.yaml").

Using Sylius 1.6 under PHP 7.2

Compatibility with Sylius 1.12

Hello,

While testing this plugin with sylius/sylius-standard:1.12.x-dev, I was unable to install it because of the strict restriction of this plugin composer.json file.

Solution :

Remove the strict requirements for Sylius and replace it by : ^1.9

Also it's maybe useless to specify the php version inside a plugin unless there is a specific reason because Sylius is already requiring a specific PHP version.

Finally, the requirement to symfony/event-dispatcher is a duplicate because Sylius already need it : composer why symfony/event-dispatcher

Option dependent price

Hi,

Thanks for the awesome plugin! It works very nice.
The only missing feature from our point of view is a price that depends on other options.

So for example, when a customer selects that he wants a type of addition the price of another option changes.

I tried to accomplish this with a custom price caluclator but that didn't work since I didn't have the right information in the price calculator.

Do you know a way that could help us out?

Jaap

Migrations files for v1.6.0 - 404: Not Found

Hello,

I'm using the Sylius 1.6.0.
I was trying to solve the admin product option client form, because there's no Customer option value in the list form :
image

And I saw an update, I was thinking it's maybe this. But I can't complete the installation process from : https://github.com/Brille24/SyliusCustomOptionsPlugin/blob/master/UPGRADE-1.6.md

But the migrations files are missing.
Could you please give us a new link ?
Are you able to give me any information in order to fix the creation of customer options values on a product ?

Thanks

Feature Request: add disabled option for dropdown entries

It would be nice if I could disable options in the dropdowns (select and multi_select).

The reason is simple: some options are sometimes temporarily unavailable. Basically, we have to wait for some deliveries until we can offer a specific option again. So that option can be unavailable for a month or so.

Ideally, one could enable and disable option for each channel. Though, as long as nobody is requesting that I don't think it's worth the effort. A general "disable/enable" option for dropdown options would be great already.

In the frontend the option would simple be disabled. I am not sure how easy the form validations would be as Sylius validations are sometimes a bit tricky.

Here's an image as example how this could look in the backend
grafik

The API doesn't work anymore

The Sylius Unit tests show that the parts of the API, that use the product break because of a doctrine exception.

After replacing the Product class with our own product class, the translations of the Product still return the Sylius Product and not the new Brille24 Product and that leads to conflicts in the typing system.

Feature Request: Show custom option only if specific core option value chosen

This plugin is really nice. Great work!

One feature I'd like to see is the ability to only show the custom option if the user chooses a value from another core option.

For example:

  • There is a core/Sylius option of 'Colour' containing 'White, Red, Custom'.
  • A Custom Option called custom_colour is created but not a required field.
  • When the user visits the product, the custom_colour isn't shown.
  • If the user chooses 'White' from the Colours option, custom_colour isn't shown.
  • If the user chooses 'Custom' from the Colours option, `custom_colour IS shown and is required before the item can be purchased.

Argument 1 passed to Brille24\SyliusCustomerOptionsPlugin\Entity\CustomerOptions\CustomerOptionAssociation::setPosition() must be of the type int, null given

There's something wrong with the form validation of customer option groups. The option position field looks required, but when you leave it empty and submit the form an exception appears. I was able to work around the issue by removing the int type hint from the setter, but I understand that's probably not the real fix.

Steps to reproduce

  1. Add a new customer option group
  2. Fill in all required fields and add one option, but leave the position field empty
  3. Submit the form

Using plugin with attributes

Hi,

Can you please confirm me that the plugin doesn't work with attributes in the entities ?

Think in advance.

Extending entities breaks backend forms

I extended the CustomerOptionValuePrice entity.

  • overwrote the factory
  • updated the sylius resources config for the entity and the factory

Yet, when I try to use the form in the backend I git this error when saving:
Expected value of type "App\Entity\Brille24CustomerOptionsPlugin\CustomerOptionValuePrice" for association field "App\Entity\Brille24CustomerOptionsPlugin\CustomerOptionValue#$prices", got "Brille24\SyliusCustomerOptionsPlugin\Entity\CustomerOptions\CustomerOptionValuePrice" instead.

I think the issue is that Brille24\SyliusCustomerOptionsPlugin\Form\CustomerOptionValuePriceType set CustomerOptionValuePrice as default value for the data_class. So even if I extend the entity, the form data_class is still set to the old entity.

I added a form extension and tried to overwrite the configureOptions method but for some reason my extension doesn't get called. Haven't figured out why yet.

Looking at the formType I noticed that it extends AbstractType. Shouldn't it extend the AbstractResourceType? I think if the formType was structured like the Sylius\Bundle\ProductBundle\Form\Type\ProductType this issue would not be a problem. Sylius passed the entity class as parameter, so after the entity is extended and the sylius_resource config is updated the forms automatically receive the class name of the extended class.

Type Error in AddToCartTypeExtension

Argument 1 passed to Brille24\SyliusCustomerOptionsPlugin\Form\Extensions\AddToCartTypeExtension::getConstraints() must be an instance of Brille24\SyliusCustomerOptionsPlugin\Entity\ProductInterface, instance of App\Entity\Product\Product given, called in

https://ibb.co/MkFYVqP

After adding the bundle, I am not able to add products with a customer option to the cart

I installed the bundle as outlined in the Readme file in my Sylius 1.12 instance. I've configured a required customer option of type text, added the customer option group, and assigned the customer option group to one product. The product itself is a simple product with no variants. Even adding variants did not change anything.

When trying to add the product to the cart (providing a proper input value for the customer option), Sylius fails with the following error:

Sylius\Bundle\OrderBundle\Controller\OrderItemController::resolveAddedOrderItem(): Return value must be of type Sylius\Component\Order\Model\OrderItemInterface, bool returned

At first, I thought it was an incompatibility with the Sylius version I am using. I debugged things in depth and found the problem to be the comparison in OrderItemCustomerOptionCapableTrait::equals() The check fails because the call $product->hasCustomerOptions() is true and is returned negated.

Am I missing some configuration?

Sylius 1.8 and sylius-labs/coding-standard ^3.2

HI!

I'm trying to install the latest version of the plugin on a fresh Sylius 1.8.5 but I get a composer dependency mismatch:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - brille24/sylius-customer-options-plugin 2.7.0 conflicts with symplify/package-builder[8.3.23].
    - brille24/sylius-customer-options-plugin 2.7.0 conflicts with symplify/package-builder[8.3.23].
    - brille24/sylius-customer-options-plugin 2.7.0 conflicts with symplify/package-builder[8.3.23].
    - Installation request for brille24/sylius-customer-options-plugin ^2.7 -> satisfiable by brille24/sylius-customer-options-plugin[2.7.0].
    - Installation request for symplify/package-builder (locked at 8.3.23) -> satisfiable by symplify/package-builder[8.3.23].

Is seems that the latest Sylius requires coding-standard as ^3.2 which in turn requires a package-builder version that is in conflict with this plugin.

Is there something I can do to install your plugin? Thanks!

CUSTOMER_OPTION_ADJUSTMENT not taken in Payum

Hi there,

When u try to pay with Paypal using this plugin. The price amout sent is not the right one.
It miss the CUSTOMER_OPTION_ADJUSTMENT.

We need to override it by ourself the ConvertPaymentAction from the Sylius framework.

Need more details?

EditCustomerOptionsAction not compatible for Sylius >= 1.9

Hi there,

I just noticied during my test than there's a missing update on the EditCustomerOptionsAction controller 👍

$this->eventDispatcher->dispatch( 'brille24.order_item.pre_update', new ResourceControllerEvent($orderItem) );
should become
$this->eventDispatcher->dispatch( new ResourceControllerEvent($orderItem), 'brille24.order_item.pre_update' );

Same for :
$this->eventDispatcher->dispatch( 'brille24.order_item.post_update', new ResourceControllerEvent($orderItem) );
Should become :
$this->eventDispatcher->dispatch( new ResourceControllerEvent($orderItem), 'brille24.order_item.post_update' );

Thanks!

Use the ServiceRepository pattern

The Service repository pattern explained (here: Section "Repository by composition")[https://www.thinktocode.com/2018/03/05/repository-pattern-symfony/] can be used to simply slip the repository overrides into the repository hierarchy so that a projects that has multiple overrides do not need to override or decorate anything.

Validation Failed when i add any product in the cart

PHP: 7.4.21
Sylius: 1.10.0
Symfony: 5.3.3
SyliusCustomOptionsPlugin: 2.13.0

I've just completed the installation, but when i add a product to the cart (no matter if i have a custom options or not on it).

I receive this error:

{
    "errors": {
        "form": {
            "code": 400,
            "message": "Validation Failed",
            "errors": {
                "errors": [
                    "Questo valore non \u00e8 valido."
                ],
                "children": {
                    "cartItem": {
                        "children": {
                            "quantity": {},
                            "variant": {
                                "children": {
                                    "COL_AWL122": {}
                                }
                            }
                        }
                    },
                    "customer_options": {}
                }
            }
        },
        "errors": [
            "Questo valore non \u00e8 valido."
        ]
    }
}

What could be the problem?

Thanks

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.