Giter Club home page Giter Club logo

dreamhouse-lwc's Introduction

Dreamhouse Lightning Web Components Sample Application

CI Workflow Packaging Workflow codecov

Important

This is the modern Lightning Web Components version of the Dreamhouse sample application. If you are looking for the legacy Aura version, click here.

dreamhouse-logo

DreamHouse is a sample application that demonstrates the unique value proposition of the Salesforce platform for building Employee Productivity and Customer Engagement apps.

Trailhead Badge Learn more about this app by completing the Quick Start: Explore the Dreamhouse Sample App Trailhead project or by watching this short presentation video.


This sample application is designed to run on Salesforce Platform. If you want to experience Lightning Web Components on any platform, please visit https://lwc.dev, and try out our Lightning Web Components sample application LWC Recipes OSS.

Table of contents

Installing Dreamhouse using a Scratch Org

  1. Set up your environment. Follow the steps in the Quick Start: Lightning Web Components Trailhead project. The steps include:

    • Enable Dev Hub in your Trailhead Playground
    • Install Salesforce CLI
    • Install Visual Studio Code
    • Install the Visual Studio Code Salesforce extensions, including the Lightning Web Components extension
  2. If you haven't already done so, authorize your hub org and provide it with an alias (myhuborg in the command below):

    sf org login web -d -a myhuborg
    
  3. Clone this repository:

    git clone https://github.com/dreamhouseapp/dreamhouse-lwc
    cd dreamhouse-lwc
    
  4. Create a scratch org and provide it with an alias (dreamhouse in the command below):

    sf org create scratch -d -f config/project-scratch-def.json -a dreamhouse
    
  5. Push the app to your scratch org:

    sf project deploy start
    
  6. Assign the dreamhouse permission set to the default user:

    sf org assign permset -n dreamhouse
    
  7. (Optional) Assign the Walkthroughs permission set to the default user.

    Note: this will enable your user to use In-App Guidance Walkthroughs, allowing you to be taken through a guided tour of the sample app. The Walkthroughs permission set gets auto-created with In-App guidance activation.

    sf org assign permset -n Walkthroughs
    
  8. Import sample data:

    sf data tree import -p data/sample-data-plan.json
    
  9. Open the scratch org:

    sf org open
    
  10. In Setup, under Themes and Branding, activate the Lightning Lite theme.

  11. In App Launcher, select the Dreamhouse app.

Installing Dreamhouse using an Unlocked Package

Follow this set of instructions if you want to deploy the app to a more permanent environment than a Scratch org or if you don't want to install the local developement tools. You can use a non source-tracked orgs such as a free Developer Edition Org or a Trailhead Playground.

Make sure to start from a brand-new environment to avoid conflicts with previous work you may have done.

  1. Log in to your org

  2. Click this link to install the Dreamhouse unlocked package in your org.

  3. Select Install for All Users

  4. In App Launcher, click View all, select the Dreamhouse app.

  5. Click the Settings tab and click the Import Data button in the Sample Data Import component.

  6. If you're attempting the Quick Start on Trailhead, this step is required, but otherwise, skip:

    • Go to Setup > Users > Permission Sets.
    • Click dreamhouse.
    • Click Manage Assignments.
    • Check your user and click Add Assignments.
  7. In Setup, under Themes and Branding, activate the Lightning Lite theme.

  8. In App Launcher, select the Dreamhouse app.

Installing Dreamhouse using a Developer Edition Org or a Trailhead Playground

Follow this set of instructions if you want to deploy the app to a more permanent environment than a Scratch org. This includes non source-tracked orgs such as a free Developer Edition Org or a Trailhead Playground.

Make sure to start from a brand-new environment to avoid conflicts with previous work you may have done.

  1. Clone this repository:

    git clone https://github.com/dreamhouseapp/dreamhouse-lwc
    cd dreamhouse-lwc
    
  2. Authorize your Trailhead Playground or Developer org and provide it with an alias (mydevorg in the command below):

    sf org login web -s -a mydevorg
    
  3. Run this command in a terminal to deploy the app.

    sf project deploy start -d force-app
    
  4. Assign the dreamhouse permission set to the default user.

    sf org assign permset -n dreamhouse
    
  5. Import some sample data.

    sf data tree import -p ./data/sample-data-plan.json
    
  6. If your org isn't already open, open it now:

    sf org open -o mydevorg
    
  7. In Setup, under Themes and Branding, activate the Lightning Lite theme.

  8. In App Launcher, select the Dreamhouse app.

Note on Sample Data Import

Properties inserted using the Salesforce CLI will appear as listed on TODAY() - 10 days. If you want to have this value randomized, perform the data import from the app Settings tab instead.

Optional Installation Instructions

This repository contains several files that are relevant if you want to integrate modern web development tooling to your Salesforce development processes, or to your continuous integration/continuous deployment processes.

Code formatting

Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the Prettier formatter.

Warning The current Apex Prettier plugin version requires that you install Java 11 or above.

Code linting

ESLint is a popular JavaScript linting tool used to identify stylistic errors and erroneous constructs. To use ESLint with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .eslintignore file is provided as part of this repository to exclude specific files from the linting process in the context of Lightning Web Components development.

Pre-commit hook

This repository also comes with a package.json file that makes it easy to set up a pre-commit hook that enforces code formatting and linting by running Prettier and ESLint every time you git commit changes.

To set up the formatting and linting pre-commit hook:

  1. Install Node.js if you haven't already done so
  2. Run npm install in your project's root folder to install the ESLint and Prettier modules (Note: Mac users should verify that Xcode command line tools are installed before running this command.)

Prettier and ESLint will now run automatically every time you commit changes. The commit will fail if linting errors are detected. You can also run the formatting and linting from the command line using the following commands (check out package.json for the full list):

npm run lint
npm run prettier

Code Tours

Code Tours are guided walkthroughs that will help you understand the app code better. To be able to run them, install the CodeTour VSCode extension.

Credits

The app GeocodingService uses OpenStreetMap API to geocode property addresses. OpenStreetMap® is open data, licensed under the Open Data Commons Open Database License (ODbL) by the OpenStreetMap Foundation (OSMF). You are free to copy, distribute, transmit and adapt OpenStreetMap data, as long as you credit OpenStreetMap and its contributors. If you alter or build upon our data, you may distribute the result only under the same licence. The full legal code explains your rights and responsibilities in regard to the service.

dreamhouse-lwc's People

Contributors

albarivas avatar ccoenraets avatar dependabot-preview[bot] avatar dependabot[bot] avatar github-actions[bot] avatar kevinv11n avatar lekkimworld avatar muenzpraeger avatar ntotten avatar pozil avatar satyasekharcvb avatar svc-scm avatar tessasac avatar trailheadapps-bot avatar zaynelt 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dreamhouse-lwc's Issues

Implement WITH_SECURITY_ENFORCED in SOQL

What is missing from the application? Please describe.
With Spring '20 a new security option WITH _SECURITY_ENFORCED is available. This is not reflected in the codebase.

Describe the solution you'd like
The code base needs to be checked if/where it makes sense to apply the option.

Describe alternatives you've considered
None.

Can't install any of the "trailheadapps" using the unlocked package install link once another trailheadapp is installed

Getting the following error when trying ot install any of the trailheadapps apps once one of them is already installed in my dev org:

Package: LWCRecipes (04tB0000000KAfT)
Error Number: 439019472-181616 (1432842097)
Problem:

  1. You can’t remove the following public properties: pageNumber,pageSize,totalItemCount, because the component is part of a managed package.
    : You can’t remove the following public properties: pageNumber,pageSize,totalItemCount, because the component is part of a managed package.

Fix prettier command for Windows compatibility

What is missing from the application? Please describe.
The current configuration of the npm script for running Prettier doesn't work on Windows.

Describe the solution you'd like
Change the format of the prettier commands from using single quotes to escaped double quotes.

Example:

{
        "prettier": "prettier --write \"**/*.{css,html,js,json,md,ts,yaml,yml}\"",
        "prettier:verify": "prettier --list-different \"**/*.{css,html,js,json,md,ts,yaml,yml}\"",
}

Remove lightningExperienceSettings from project-scratch-def.json

Creation of scratch org with the given project-scratch-def.json fails with the error message:

=== Component Failures [1]
[...]
Error shape/settings/LightningExperience.settings settings/LightningExperience.settings Not available for deploy for this API version
ERROR running force:org:create: Failed to deploy settings to scratch org.

After removal of lightningExperienceSettings, the scratch org is created. (sfdx-cli 7.109.0 , scratch org 52.0) The setting appears not to work with an up-to-date environment anymore. Or have I missed anything?!

Instructions for setup hit a deployment error

Summary

If you follow the instructions from the readme here, step 5 (pushing the app) produces the following deployment errors.

Note that this is also a blocker for completing the Set Up the Project on Your Local Machine trailhead module.

*** Pushing with SOAP API v55.0 ***
DEPLOY PROGRESS | ████████████████████████████████████████ | 18/18 Components

=== Component Failures [51]

 Type  Name                Problem
 ───── ─────────────────── ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 Error auraPropertyListMap Invalid definition for PropertyController: ApexService.getType() return null with currentNamespace: c, namespace: null, name: PropertyControllerresource leaflet cannot be found in namespace .
 Error asdf                duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error asdf                duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error asdf                duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error barcodeScanner      duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error barcodeScanner      duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error barcodeScanner      duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error brokerCard          duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error brokerCard          duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error brokerCard          duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error daysOnMarket        duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error daysOnMarket        duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error daysOnMarket        duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error errorPanel          duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error errorPanel          duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error errorPanel          duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error ldsUtils            duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error ldsUtils            duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error ldsUtils            duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error navigateToRecord    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error navigateToRecord    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error navigateToRecord    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error paginator           duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error paginator           duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error paginator           duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyCarousel    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyCarousel    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyCarousel    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyCarousel    Unable to find Apex action class referenced as 'PropertyController'.
 Error propertyFilter      duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyFilter      duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyFilter      duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyLocation    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyLocation    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyLocation    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyMap         duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyMap         duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyMap         duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertySummary     duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertySummary     duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertySummary     duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyTile        duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyTile        duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyTile        duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyTileList    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyTileList    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error propertyTileList    duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error sampleDataImporter  duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error sampleDataImporter  duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error sampleDataImporter  duplicate value found: <unknown> duplicates value on record with id: <unknown>
 Error my_sfdx_project     Cannot find Lightning Component Bundle my_sfdx_project.

ERROR running force:source:push:  Push failed.```

### Salesforce Org Type

Scratch Org

### Steps To Reproduce

_No response_

### Current Behavior

_No response_

### Expected Behavior

_No response_

### Relevant Log Output

_No response_

### Code of Conduct

- [X] I agree to follow this project's Code of Conduct

Exclude temporary files from local-dev-server for git commits

What is missing from the application? Please describe.
The newly introduced local development server for on-platform LWC creates a new local folder within DX projects. That folder holds temporary data.

Describe the solution you'd like
The folder should be excluded from git commits, as the data is only temporary. For that the .gitignore needs to be updated exactly as in this pull request.

Apply SLDS best practices to components

What is missing from the application? Please describe.
To reflect UI development best practices the sample app needs to make use of SLDS design tokens that make use of the UI density settings in an org. Similar to that any manual CSS should be replaced, where it makes sense, with SLDS classes instead.

Describe the solution you'd like
Validate all Lightning web components (and Aura, if applicable) if they make use of the latest SLDS design tokens, and if manual CSS syntax needs to be updated with SLDS classes.

The SLDS Validator provides the needed analysis and correction capabilities.

Push problem

I get

"Unexpected file found in package directory: /Users/.../lwc/dreamhouse-lwc/force-app/main/default/applications/Dreamhouse.app-meta.xml."

when i try to do : sfdx force:source:push

What am i doing wrong?

Better data for highlight daysOnMarket component behavior

Currently all the sample properties have the same Date_Listed__c date (TODAY() - 10), and thus the Days_On_Market__c field is always the same. We should improve sample data, to have properties with different dates, so that the daysOnMarket component behavior is clearer.

Remember to change both the sample data in the static resource and the json files.

Permission Set "Walkthroughs" is not there

Summary

Hey everyone, in the instructions for the app, it gives instructions to optionally install a permission set "Walkthroughs." However, in the permissionsets folder, no such permission set exists; only a "dreamhouse" permission set. So probably want to either add the permission set XML file to the folder, or remove that from the instructions. You get an error when trying to do a push when referencing the missing permission set.

Please change all instances of "Address__c" in data/properties-data.json to "Street_Address__c"

I downloaded the dreamhouse app and when I executed the following command on VS Code to import data

sfdx force:data:tree:import -p ./data/sample-data-plan.json

I got an error for each address stating

errors":[{"statusCode":"REQUIRED_FIELD_MISSING","message":"Required fields are missing: [Street_Address__c]","fields":["Street_Address__c"]}]}

When I changed every instance of "Address__c" in data/properties-data.json to "Street_Address__c" , the problem went away and I was able to import the data just fine.

Husky pre-commit hook is not compatible with Windows

The Husky pre-commit hook that runs formatting, linting and tests uses shell commands that are not compatible with Windows. These are only working in *nix environments.

Problematic code in package.json:

"precommit": "npm run prettier:verify && [ $? -eq 0 ] && (npm run lint && npm run test) || exit -1"

This issue affects all sample apps.

Exclude .vscode from Prettier

Prettier should not format auto-generated/internal IDE files like .vscode. This applies to ALL sample apps.

Fix: simply add .vscode to .prettierignore.

Fix lint-staged commit warning

Problem: each commit to the project outputs this warning:
⚠ Some of your tasks use git add command. Please remove it from the config since all modifications made by tasks will be automatically added to the git commit index.

Fix: Current version of lint-staged automates git add action so we need to remove this from package.json:

"*": [
  "git add"
]

PropertyCarousel not being used

PropertyCarousel component is not referenced anywhere. In the dreamhouse-sfdx version, it was part of the property record page.

Auth command in readme should be force:auth:... not auth:

Summary

I think the readme needs to be updated to reflect the latest sfdx cli commands.

Steps To Reproduce:

  1. Try using the setup steps

Expected result

I should have been able to auth into my dev hub org.

Actual result

Got the warning:

 ›   Warning: auth:web:login is not a sfdx command.
Did you mean force:auth:web:login? [y/n]: 

Additional information

Feel free to attach a screenshot or code snippets.

LWC container created on init call overriding all other LWCs already rendered with their own unique state

Situation: Up until Salesforce API got upgraded to 48.0 every time an agent would open a salesforce tab when opening a support case I was able to create a new aura:component that would trigger an init call to the controller creating a div with a unique id and then create a LWC component that contains our bundle.js react code that would look for this unique id and would get inserted in it without affecting any other LWC components that were already rendered (since they have unique ids and the LWC would only get inserted in the div we had just created) and then we would set the LWC component into a div on the cmp on the same init call. Here is the code:

CMP Component: //Here we create the .cmp that will be executed every time a user opens a new tab and where we define where our lwc and div that contains our app will be set to.

 <aura:component implements="flexipage:availableForAllPageTypes
      access="global" controller="auraController">
      <aura:handler name="init" value="{!this}" action="{!c.init}" />
      <aura:attribute name="reactApp" type="Aura.Component[]" access="global"/>
      <aura:attribute name="reactAppBundle" type="Aura.Component[]" access="global" />
      <lightning:card aura:id="reactApp" class="customCardClass">{!v.reactApp}</lightning:card>
      <div aura:id="reactBundle">{!v.reactAppBundle}</div>
    </aura:component>

JS Component: //Here we execute the init call every time a user opens a new tab we assign this div an unique id and then we create the LWC component that will get inserted into this div

init: function(cmp) {
    let id = Math.random()
      .toString()
      .substr(2);


    $A.createComponents(
      [
        ["div", { id: id }],
        [
          “c:lwc",
          {
            Id: id
          }
        ]
      ],
      function(results) {
        cmp.set("v.reactApp", [results[0]]);
        cmp.set("v.reactAppBundle", [results[1]]);
      }
    );
  }

LWC: //Here we get that id that was created in the controller and through the LWC client, we pass it to the React frontend code so it knows what DOM element it needs to get attached to.

export default class lwc extends LightningElement {
  @api id;
  renderedCallback() {
  getSessionId().then(result => {
      this.sessionId = result;
      Promise.all([loadScript(this, app + "/bundle.js")])
        .then(() => {
          window.render(this.id); (this will be used in the frontend code
        })
        .catch(error => {
          console.log(error);
        });
    });
 }
}

React Code: //this is the entry point where we define to what DOM element it should append itself to when the id is received from the LWC client

let renderApp = function (id: any) {
  store.dispatch(setAppClientId(id));
  ReactDOM.render(
    <Provider store={store}>
      <Router>
        <App />
      </Router>
    </Provider>,
    document.getElementById(id ||'root')
  );
};

(window as any).render = renderApp;
The problem: The issue we’re facing is ever since the API got upgraded to 48.0 the same code that was working before it’s no longer working and the problem we’re experiencing is that now when we set the LWC component we just created into the body of the div we also just created it’s setting/overriding the state of all the other LWCs that were already rendered (which is the problem since the state is unique per LWC). We know this from seeing the behavior in the DOM. Sorry if this may be unrelated but thought I'd give it a shot

VSCode Test Explorer unable to run tests

Summary

After cloning the repo, VSCode's Test Explorer is unable to run the tests in the app.
The tests work when running npm run test:unit in terminal.

Fixed by running npm install jest-environment-jsdom --save-dev.

I can submit a PR with extra dependency if you agree with the approach.

Salesforce Org Type

Scratch Org

Steps To Reproduce

  1. Clone the repo
  2. Open it with VSCode
  3. Run npm install
  4. Run npm run test:unit and observe that the tests pass
  5. Open VSTest Explorer click on "Run all" icon

Current Behavior

All tests fail

Expected Behavior

All tests pass

Relevant Log Output

● Test suite failed to run

    TypeError: Cannot read properties of undefined (reading 'html')

      at new JSDOMEnvironment (node_modules/jest-environment-jsdom/build/index.js:72:44)

Code of Conduct

  • I agree to follow this project's Code of Conduct

[222+] Migrate Aura page template to LWC

What is missing from the application? Please describe.
Currently the application uses an Aura component as page template (see here).

Describe the solution you'd like
Once page templates are natively available with LWC the Aura wrapper should be removed.

Sample property data is different when imported from CLI or generated from UI

Summary

Sample property data is different when imported from CLI or when generated from the UI (Import Data button in the Sample Data Import component).
This can cause issues when completing the Quick Start project because it fails to find an expected sample property when installing the app with a package.

The CLI and Trailhead challenge uses this data:

data/properties-data.json

The UI (package install) uses this data:

force-app/main/default/staticresources/sample_data_properties.json

Recommended fix:

  • update property names in the static resource to match the CLI data plan.
  • bring back the Tags__c fields in CLI data plan

Steps To Reproduce:

  1. Follow readme instructions to install the app via a package and browse properties.
  2. Follow readme instructions to install the app via the CLI and browse properties.

Expected result

The two sample data import/generation methods should produce the same data.

Actual result

We have different sample property names.

Invalid version specified

Following the instructions to install Dreamhouse using Salesforce DX, I am only getting to 5. Push the app to your scratch org.

$ sfdx force:source:push

PROJECT PATH  ERROR
────────────  ──────────────────────────────
N/A           Invalid version specified:45.0

Using a lower version, e.g. 44.0, returns even more errors.

$ sfdx --version
sfdx-cli/6.49.0 (darwin-x64) node-v10.13.0

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.