Git Product home page Git Product logo

xgenerator's Introduction

Build status

Experience Generator

What do you get:

  • Experience Generator (xGenerator) - Create realistic analytics data for Experience Analytics, MV Tests, Path Analyzer, etc.
  • Profile Experience Generator (xProfileGenerator) - Create deep analytics for individual visitors to show robust data for xProfile.
  • EXM Experience Generator (ExmGenerator) - Create realistic analytics data for EXM messages.

Quick start - You can get started with the released Sitecore installation package - https://github.com/Sitecore/xGenerator/releases/download/9.1.0.0/ExperienceGenerator_91.zip. Just install it like any other Sitecore package with the Sitecore installation wizard or get it by default when deploying the Habitat Home demo website.

xgenapps

Custom development - If you want to make code updates for Experience Generator, you can clone the repository and get started. You can also build your own customized Sitecore installation package with the preset Sitecore Rocks package generator.

You can deploy your custom changes to a Sitecore installation for testing by reviewing the Installation Instructions listed further down in the ReadMe.

Experience Generator

Generate "realistically looking" traffic for the Sitecore Experience Database (xDB) with configurable patterns, including:

  • Trends over time
  • Identified contacts with multiple visits
  • Bounce rate
  • Geo location
  • Landing pages
  • Channels
  • Referrers
  • Internal and external search
  • Outcomes
  • Campaigns

Experience Profile Generator

Generate visits for Sitecore contacts (xProfile) with configurable settings:

  • Contact information
  • Visit pages
  • Recency
  • Outcomes
  • Geo location
  • Goals
  • Channel

Solution Structure

ExperienceGenerator.Client – SPEAK v1 applications to manipulate with configuration of created data. Includes Experience generator and Experience Profile generator tools

ExperienceGenerator – core of SPEAK applications. Consists of:

  • configuration parsers (for Experience generator and Experience Profile generator tools)
  • Databases of request data (location, device distribution, user agents, search engines etc.)
  • Request parameters randomized factories.

Colossus – contains of math randomizer tools, basic web request generator and parser tools. Contains tools that allow serialize\deserialize all XGenerator data to custom web request header.

Colossus.Integration – provide integrations with Sitecore. Adds custom handlers to Sitecore pipelines to be able patch current request based on received data from Colossus request headers. Contains walkers to visit sitecore pages with required behavior strategy:

  • Strict walker – uses predefined strict pages list, used in xProfile Generator
  • Random walker – opens random page or landing page. According to required count of visits\bounces parses html output, extracts <a href="..."/> elements with relative hyperlink path and choose random one to visit if possible. Both walkers adds page event data if required from configuration.

General processing flow for XGenerator:

  1. User opens XGenerator tools, performs job configuration.
  2. User clicks “Start” button
  3. ExperienceGenerator.Client pass received configuration to ExperienceGenerator parser
  4. ExperienceGenerator parser creates set of segments with request variables based on configuration and pass them to XGenerator JobManager
  5. JobManager starts invoking requests based on behavior configuration: XProfile behavior simulator or XAnalytics behavior simulator.
  6. Sitecore receives requests as is, setups analytics tracker by calling own pipelines
  7. Colossus.Intergration processors executed inside Sitecore pipelines to patch analytics tracker with current customizations of request

Installation Instructions

In order to deploy the assets, you need either Visual Studio 2017 or MSBuild Tools for Visual Studio 2017. Installation instructions assume using PowerShell 5.1 in administrative mode.

The following is a list of default values / assumptions for install locations

  • Project location: c:\projects\xgenerator\
  • Instance Url: xgenerator.dev.local
  • Website Root: c:\inetpub\wwwroot\xgenerator.dev.local

If you do not want to use the default settings, you need to adjust the appropriate values in cake-config.json file:

  • ProjectFolder
  • InstanceUrl
  • WebsiteRoot

The cake script will automatically create a publishSettings.targets.user file with the value of the InstanceUrl specified in the cake-config.json file.

  • Run .\build.ps1

Package Building Instructions

  • Building the installation package requires Sitecore Rocks.
  • The package definition is in ExperienceGenerator.Client\ExperienceGenerator.package. You need to point it to a Sitecore install with Experience Generator installed to build the package.

Extension points:

  • Variable Factories in XGenParser class that fill each request with variables based on configuration (device, date, duration, channel, campaign etc.) allow us setup new factory to fill new request variable
  • Processors in Colossus.Integration library patches all requests with provided request variables.
  • XGenParser – class that converts configuration to set of requests. Executes all request variable factories.

THIS MODULE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT SUPPORT, WARRANTIES OR CONDITIONS OF ANY KIND.

xgenerator's People

Contributors

adoprog avatar dashkodo avatar dsolovay avatar eldblom avatar eldblom-zz avatar jeanfrancoislarente avatar nielskuhnel avatar olegjytnik avatar sc-christopherhunt avatar scottmulligan avatar stasmaxymov avatar yassinealahyane 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

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

xgenerator's Issues

Error: No type was found that matches the controller named 'ExperienceGeneratorActions'.

Using version 9.3 of the xGenerator results in the following error message:

{ "Message": "No HTTP resource was found that matches the request URI 'https://web-local.onvz.nl/clientapi/xgen/countries'.", "MessageDetail": "No type was found that matches the controller named 'ExperienceGeneratorActions'." }

Been trying many different ways to get the route correct but nothing seems to work.....any ideas?

EXM Generator Fails - No Cities

The EXM generator fails.
I traced it to the GetRandomCity method. The issue is where it is loading cities by subcontinent from GeoIP cache. The error is fired when no cities exist.
It appears to be looking for the City data from a file named "ExperienceGenerator.Data.countryInfo.txt"
Where does this text file come from?

ManagedPoolThread #9 12:25:55 ERROR EXM Generator failed for campaign: 71b62829-0550-4c3a-8328-0cfb0d49d615
Exception: System.InvalidOperationException
Message: No items specified
Source: Colossus
at Colossus.Statistics.WeightedSetBuilder`1.Build()
at ExperienceGenerator.Services.GetRandomCityService.GetRandomCity(String subcontinentCode)

This is with Sitecore 8.1 update 2.

Improve generation speed

Approx results:
10000 contacts for 1 page per visit generated in 2 mins
10000 contacts for 5 page per visit - generation time 4:10

Xgenerator doesnot work with Sitecore 93

{"Message":"An error has occurred.","ExceptionMessage":"Could not load type 'Sitecore.Jobs.JobOptions' from assembly 'Sitecore.Kernel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=null'.","ExceptionType":"System.TypeLoadException","StackTrace":" at ExperienceGenerator.Client.Infrastructure.XGenSitecoreJobManager.StartJob(JobInfo info, JobSegment segment)\r\n at ExperienceGenerator.XGenJobManager.StartNew(JobSpecification spec)\r\n at ExperienceGenerator.Client.Controllers.ExperienceGeneratorJobsController.Post(JobSpecification spec)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.b__3(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext()"}

Update icons for LaunchPad

In the scope of LaunchPad redesign work the icons of all apps were changed. I would like to ask to update items of icons that appear on LaunchPad to align them with the new design.

Please, use the following icon paths:
LaunchPadIcons/32x32/EXM Experience Generator.png
LaunchPadIcons/32x32/Experience Generator.png
LaunchPadIcons/32x32/Profile Experience Generator.png

Note: All icons are located at Sitecore.Themes repository.

Please, reach me out if you need more details.

xProfileGenerator - Deleting an interaction does not work in SPEAK interaction editor

Deleting an interaction for a contact in xProfileGenerator does not work

  • It appears to be deleted at first but remains there and will re-appear if you close and open the interaction editor again.
  • Also apparent if removing interactions and then saving a preset - old interactions listed when loading the preset.

Issue must be that the contact specification is not updated when deleting interactions. Need to investigate how to trigger an update of the specification in JS on deleting.

Error with default settings

Installed the package on 9.3 initial release with habitat home demo, and getting error that says:

Exception System.TypeLoadException: Could not load type 'Sitecore.Jobs.JobOptions' from assembly 'Sitecore.Kernel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=null'.
   at ExperienceGenerator.Client.Infrastructure.XGenSitecoreJobManager.StartJob(JobInfo info, JobSegment segment)

xGen and xProfileGen - Not all countries loaded from "CountriesByContinent.txt"

Periodically not all countries are loaded from this document and the resulting issues are:

  • xProfileGen - not all countries listed when creating a new contact
  • xGen - Data generation will fail and stop the generator if trying to load a continent code that has not been loaded from the document (when attempting to select a city). A temporary workaround is to scope the geolocations small to an area that has been loaded (make change in Locations tab in xGen tool)

Empty email errors

We're running xGenerator for a client on Sitecore 9.0.2 but having a problem. It's not actually generating anything and the xConnect logs are filled with identifer should not be empty. I did a bunch of debugging and it seems in ContactDataProcessor.cs, the value for emailValue is empty in

Tracker.Current.Session.IdentifyAs("xGenerator", emailValue);

based on what i'm seeing in the code:

requestInfo.SetIfVariablePresent("ContactEmail", email =>
{
    emailValue = email;
});

it would seem that the variable "ContactEmail" is not getting populated before ContactDataProcessor is being run.

xGenerator for Commerce


Epic | xGenerator for Commerce | Provide the ability to showcase   the full functionality of xDb / Commerce Analytics by generating realistic   data using the xGenerator tool and the Commerce API(s)
-- | -- | --
Feature |   | xGen -   Test Commerce Analytics | Install   the upgraded version of Habitat Home Commerce 9.1 and ensure that the   Analytics are behaving as they should (triggering events, registering goals,   value, etc).
User Story |   |   | Test Standard   Commerce Analytics | Ensure basic   analytics are accumulated for commerce related activity
User Story |   |   | Test Writing to Analytics | Determine   if we can write to the analytics DB          Items to test          * Search Product          * View Product          * Add to cart          * User placed an order          * Abandon Cart (add item but never go through checkout process)
Feature |   | xGen - Configuration | Modify the   config file so that the commerce tab will not show in xGen unless commerce is   installed.
User Story |   |   | xGen - Configuration | Modify the config file so that the commerce tab will not   show in xGen unless commerce is installed.
Feature |   | xGen -xData Generate   Products/PDP Views | Create a list of product based   on parameters (selected catalog, weighings, etc)          This list will be used in creating xData for each contact.                    Do we need to take inventory into account (can it be added to cart if level   = 0)          Checkout will fail if the inventory is zero, but you can add oos products   to your cart
User Story |   |   | xGen -   Random Products Algorithm Design
User Story |   |   | xGen - Generate   PDP Views |  
Feature |   | xGen -   Category Selection UI |  
User Story |   |   | xGen - Top   Categories UI | System presents   top 5 categories from commerce data
User Story |   |   | xGen - Random Categories UI | User selects adds a single random category
User Story |   |   | xGen - Optional Categories By   Search
User Story |   |   | xGen - Optional Categories By Category Tree | Select additional categories from Category Tree
User Story |   |   | xGen - Optional   Random Categories | Select a random category feature   on UI          Weight set at 50%          User can change weighing
Feature |   | xGen -   Category Selection BE | Assign   random weights to randomly selected categories          Assign user specified weights to user selected categories
User Story |   |   | xGen - System stores selected   categories
User Story |   |   | xGen - Find Top 5 Categories | Query commerce data to find top 5 categories in terms of #   products sold
User Story |   |   | xGen - Select   Random Categories | Select random categories          - Either one to be weighed by UI          - Or user chosen number to be stored from xData production
Feature |   | xGen -   Select Products | From the   categories selected, choose random products.          Products based on number customers selected, number of products in each   category and weighing.
User Story |   |   | xGen - Generate   Products | Create pool of products for   xData from products assinged to categories.          Based on number of customers and number of products in each category   selected * weighing.
Feature |   | xGen  - Generate Customers |  
User Story |   |   | xData -   Evaluate Analytics Solution | Evaluate and test that the   existing solution can be leveraged for xGen commerce.                    KP built a feature to record purchases before analytics was available.  Make sure this works.
User Story |   |   | xGen - Create Visitors | Create visitor records based on previously built xGen   components
User Story |   |   | xGen - Create   Commerce Customers | See if we can use virtual users   first.          Can the virtual user go through the whole flow as the same user?
Feature |   | xGen -   Checkout Options |  
User Story |   |   | xGen - Checkout   Weighing UI | UI to select   weights on abandon cart, drop order, place order.
User Story |   |   | xGen - Save Checkout Weighing | Add checkout weights to xGen parameters that will be used   for xData generation
Feature |   | xGen - Generate Orders |  
User Story |   |   | xGen - Generate Orders |  
User Story |   |   | xGen - Generate Shipping and   Payment
Feature |   | xGen -   Review Saved Data |  
User Story |   |   | xGen - Troubleshoot Generated   Data
User Story |   |   | xGen - View Generated Data |  
Feature |   | xGen - Cart Events |  
User Story |   |   | xGen - Record Abandon Cart |  
User Story |   |   | xGen - Record   Add To Cart |  

Missing "core" database error on CD role of an v9.1u1 XP1 instance

Not sure if this is something I've done wrong or not, so I've no issue with this being closed if I've just misread the instructions - but here's the issue I'm seeing:

I have an instance of V9.1u1 installed onto a single machine using the "XP1-SingleDeveloper.ps1" script. It's vanilla Sitecore - not a Habitat site. As far as I can see it's running ok. No errors in the logs for the CM or CD roles at least, after I browse about a bit.

I installed the package currently linked from your repo's root page (which is described as compatible with v9.1) and it completed ok. I then followed the instructions the package shows for scaled deployments. I unzipped the "files" folder from the package onto the CD instance, and edited the config on the CM instance to say it was a scaled deployment.

When I go to the Experience Generator page, and configure it to look at the CD URL, I can start a generation operation, but the CD server's log gets errors like this:

10388 15:21:59 ERROR [Sitecore Services]: HTTP GET
URL http://sc911.cd/clientapi/xgen/websites

Exception System.InvalidOperationException: Could not find configuration node: databases/database[@id='core']
   at Sitecore.Configuration.DefaultFactory.GetConfigNode(String xpath, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.CreateObject(String configPath, String[] parameters, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.GetDatabase(String name, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.GetDatabase(String name)
   at Sitecore.Sites.SiteContext.get_Database()
   at ExperienceGenerator.Client.Controllers.SiteRepository.<>c.<GetSites>b__9_1(SiteContext site)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at ExperienceGenerator.Client.Controllers.SiteRepository.GetSites()
   at ExperienceGenerator.Client.Controllers.SiteRepository.get_Sites()
   at ExperienceGenerator.Client.Controllers.SiteRepository.GetValidSites()
   at ExperienceGenerator.Client.Controllers.SiteRepository.get_ValidSites()
   at ExperienceGenerator.Client.Controllers.ExperienceGeneratorActionsController.Websites(Boolean all)
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__3(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()

That looks to me like the code makes reference to the Core DB - but I don't think V9.1 deploys a connection to Core with the CD role any more? I can see some references directly to the Core DB in the SettingsRepository classes - could they be the issue here perhaps?

Is there something I should be doing on my deployment to fix / work around the error? Or is it a bug that needs resolving in the code?

Any help appreciated...

MissingManifestResourceException

It seems that xGen doesn’t work with Sitecore 8.2.1. The following exception can be found in the log files:
Exception System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Sitecore.ExperienceAnalytics.Api.Resources.RegionResources.resources" was correctly embedded or linked into assembly "Sitecore.ExperienceAnalytics.Api" at compile time, or that all the satellite assemblies required are loadable and fully signed.
at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)
at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.GetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at ExperienceGenerator.Data.GeoDataCache.LoadRegionsFromResource()
at ExperienceGenerator.Data.GeoDataCache.FromResource()
at ExperienceGenerator.Repositories.GeoDataRepository.get_Cache()

It seems it’s due to the fact that the Sitecore.ExperienceAnalytics.Api.dll assembly doesn’t have resources
image
whereas 8.2.0 does have...
image

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.