Giter Club home page Giter Club logo

django-analytical's People

Contributors

anteru avatar apocquet avatar bittner avatar bogdanbodnar avatar brad avatar ericamador avatar failedguidedog avatar garrettr avatar jamespaden avatar jcassee avatar jezdez avatar max-arnold avatar mbourqui avatar mgaitan avatar petrdlouhy avatar pidelport avatar poswald avatar saschwarz avatar sckarlin avatar scotteadams avatar sean-wallace avatar sidmitra avatar sikmir avatar skoczen avatar smithdc1 avatar timgates42 avatar tinnet avatar vdboor avatar whynothugo avatar xthepoet 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  avatar  avatar  avatar

django-analytical's Issues

PIWIK_DOMAIN_PATH regex forbids 'localhost/piwik'

While I got around the issue by using PIWIK_DOMAIN_PATH = '127.0.0.1/piwik', I get the Exception of PIWIK_DOMAIN_PATH setting: must be a domain name, optionally followed by an URI path, no trailing slash (e.g. piwik.example.com or my.piwik.server/path) if I have it just set as localhost/piwik. I assume that ^(([^./?#@:]+\\.)+[^./?#@:]+)+(/[^/?#@:]+)*$ wants to see a '.' in there somewhere :P

ImportError: No module named 'analytical'

After installing on Ubuntu 14.04 running Python3.5 and Django 1.8.4 I'm getting an ImportError: No module named 'analytical' error. A similar env running Mac OS 10.10.5 does not experience this issue.

I have added analytical to my INSTALLED_APPS and added the basic template tags to my base template.

New release?

It's been a while since the last release, and the latest master crashes with django19 (which is at rc, and will be release in less than a couple of weeks).

Can we get a new release (1.0.1?), that's django19-compatible? :)

Piwik fallback img tracking is only served as plain HTTP

In the noscript case, the tracking img is served as HTTP only:
https://github.com/jcassee/django-analytical/blob/master/analytical/templatetags/piwik.py#L37

However, if the site is served through HTTPS, this might trigger security warnings.

As a side note, since this is a templatetag, this could use request context to detect scheme and not rely on javascript to switch between HTTP and HTTPS.

If this makes sense to you, I'll provide a patch.

Refactor setup.py (remove test setup, and the like)

Installed from master today and ran into this error:

django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named '_sqlite3'

2.3.0 release doesn't seem to have this issue. Looks like commit 347df54 broke the setup.cfg.

Full text of error:

> pip install git+https://github.com/jcassee/django-analytical.git
Collecting git+https://github.com/jcassee/django-analytical.git
  Cloning https://github.com/jcassee/django-analytical.git to /tmp/pip-vtw00h9e-build
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 31, in <module>
        from pysqlite2 import dbapi2 as Database
    ModuleNotFoundError: No module named 'pysqlite2'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 33, in <module>
        from sqlite3 import dbapi2 as Database
      File "/usr/local/lib/python3.6/sqlite3/__init__.py", line 23, in <module>
        from sqlite3.dbapi2 import *
      File "/usr/local/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module>
        from _sqlite3 import *
    ModuleNotFoundError: No module named '_sqlite3'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-vtw00h9e-build/setup.py", line 49, in <module>
        django.setup()
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/__init__.py", line 27, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/apps/registry.py", line 108, in populate
        app_config.import_models()
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/apps/config.py", line 202, in import_models
        self.models_module = import_module(models_module_name)
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 978, in _gcd_import
      File "<frozen importlib._bootstrap>", line 961, in _find_and_load
      File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 678, in exec_module
      File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/contrib/auth/models.py", line 4, in <module>
        from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 52, in <module>
        class AbstractBaseUser(models.Model):
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/models/base.py", line 124, in __new__
        new_class.add_to_class('_meta', Options(meta, app_label))
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/models/base.py", line 325, in add_to_class
        value.contribute_to_class(cls, name)
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/models/options.py", line 214, in contribute_to_class
        self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/__init__.py", line 33, in __getattr__
        return getattr(connections[DEFAULT_DB_ALIAS], item)
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/utils.py", line 211, in __getitem__
        backend = load_backend(db['ENGINE'])
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/utils.py", line 115, in load_backend
        return import_module('%s.base' % backend_name)
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "/webapps/bdw3_20171021121342Z/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 35, in <module>
        raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)
    django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named '_sqlite3'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-vtw00h9e-build/

Piwik module should be renamed to Matomo

As commented in PR #128, Piwik has been renamed to Matomo in the past. This should also reflect in the name of the related module.

Ideally, we should use a deprecation path, duplicating the modules while the deprecation warning is active.

Identifying authenticated users not working for google analytics

Hello,

Gone through the docs and understand that by default ANALYTICAL_AUTO_IDENTIFY is set to True . I have already integrated django analytical with my project and it has been working fine.. Lately I tried to check for tracking autheticated users by turning on Enable the User-ID feature in my google analytics. But cant see anything in my new userid view. Anything am i missing??

Enable other tracking types for Google Analytics

Google Analytics has three styles of tracking:

  • Single domain (which is the code Analytical produces)
  • One domain with multiple subdomains
  • Multiple top-level domains

It would be really nice to enable the last two use-cases.

One domain with multiple subdomains adds this to the single-domain code:

_gaq.push(['_setDomainName', 'example.com']);
_gaq.push(['_setAllowHash', false]);

Multiple top-level domains adds this to the single-domain code:

_gaq.push(['_setDomainName', 'example.com']);
_gaq.push(['_setAllowHash', false]);
_gaq.push(['_setAllowLinker', true

Supporting this would mean adding two more optional settings: tracking style, and domain name.

Triggering events in view code

Setting template context variables and having them output as Javascript is a good solution for events/properties that are triggered by GET requests. For view-based code it makes things a little harder because the POST-Redirect-GET pattern wipes out the context. In the Mixpanel documentation for django-analytical you recommend using something like the mixpanel-celery project to trigger events from view code. This solves the problem for mixpanel but it leaves the other methods unaddressed. There is a (rather spartan) kissmetrics API project that could be used for that one as well, however I think one of the nice things about django-analytical is that it brings all of these into one place. I think there would be value in trying to standardize the event/property triggering API.

Solutions could include:

  • Leave it as it is and let users call into whatever library they want to to trigger events
  • Use something like django-flash to persist the context across requests and let the user's browser send the event to the service on the next GET.
  • Add a tasks.py file to the project with appropriate import tests so that iff the user has celery installed, they may call to have an event registered with the appropriate service and it will be handled async. These tasks could be written to depend on the 'official api' and therefore require a library or be custom written.

For now I am going to be implementing the first option in my code since its the easiest option. Are there enough similarities in the other API's to justify one of the other options?

Tests fail with AnalyticalException not raised when settings are not set

FAIL: test_no_site_id (analytical.tests.test_tag_clicky.ClickyTagTestCase)

Traceback (most recent call last):
File "build/bdist.macosx-10.8-intel/egg/analytical/tests/utils.py", line 80, in inner
return test_func(_args, *_kwargs)
File "build/bdist.macosx-10.8-intel/egg/analytical/tests/test_tag_clicky.py", line 36, in test_no_site_id
self.assertRaises(AnalyticalException, ClickyNode)
AssertionError: AnalyticalException not raised

FAIL: test_no_account_number (analytical.tests.test_tag_crazy_egg.CrazyEggTagTestCase)

Traceback (most recent call last):
File "build/bdist.macosx-10.8-intel/egg/analytical/tests/utils.py", line 80, in inner
return test_func(_args, *_kwargs)
File "build/bdist.macosx-10.8-intel/egg/analytical/tests/test_tag_crazy_egg.py", line 29, in test_no_account_number
self.assertRaises(AnalyticalException, CrazyEggNode)
AssertionError: AnalyticalException not raised

FAIL: test_no_property_id (analytical.tests.test_tag_google_analytics.GoogleAnalyticsTagTestCase)

Traceback (most recent call last):
File "build/bdist.macosx-10.8-intel/egg/analytical/tests/utils.py", line 80, in inner
return test_func(_args, *_kwargs)
File "build/bdist.macosx-10.8-intel/egg/analytical/tests/test_tag_google_analytics.py", line 35, in test_no_property_id
self.assertRaises(AnalyticalException, GoogleAnalyticsNode)
AssertionError: AnalyticalException not raised


Ran 191 tests in 0.435s

FAILED (failures=3)

Hard to use in development environment

I just used django-analytical to integrate Piwik analytics into a site, using the Piwik-specific template tag as documented here. It works great in production, but unfortunately it causes problems for our development environment.

Obviously we don't want to track visits to the site when it's running on a local development server. It seems like it would be best to simply not embed the tracking code in the templates when we're running in development. Furthermore, it would nice to not be required to set PIWIK_DOMAIN_PATH or PIWIK_SITE_ID in the development settings, since they are unnecessary.

The documentation on PIWIK_SITE_ID says:

If you do not set the site ID the tracking code will not be rendered.

This implies that the {% piwik %} template tag won't render the tracking code if PIWIK_SITE_ID is not set, which would be very desirable behavior for the use case of the development environment. In that case, you would only have to set PIWIK_SITE_ID in settings/production.py to get the Piwik code to render in production, and it would not be rendered in the development environment.

Unfortunately, this part of the documentation appears to be incorrect. Failing to set PIWIK_DOMAIN_PATH or PIWIK_SITE_ID raises an AnalyticalException, which breaks template rendering in the development environment.

For our project, this necessitated an annoying workaround: we set PIWIK_SITE_ID to 0 (an invalid value) in settings/development.py, pass that setting to the template context via a context processor, and conditionally render the Piwik template tag based on the value of PIWIK_SITE_ID. We can't even set the PIWIK_* values to None, which would be more explicit and therefore preferable, because of the validation in get_required_setting.

It would be better for the documented behavior to be implemented, because that would make django-analytical work simply in both production and development environments, and would not require the aforementioned workaround. Another option is to simply correct the documentation, although that would leave the annoying behavior in place and still necessitate a workaround.

Am I missing anything here? Are there best practices for using django-analytical in a development environment that I am unaware of?

Asking for consent - Piwik

Hey guys,

I just realized that there is no way to use the "Ask for consent" feature of Matomo (Piwik). This is relevant because of the new GDPR in europe. I'm about to create a pull request for this one, but I want to hear your opinions on my implementation idea.

I want to introduce a PIWIK_ASK_FOR_CONSENT variable, like PIWIK_DISABLE_COOKIES.
To make it easy for the user of the consent functionality to integrate the request for consent, I wrote event listeners which are triggered on click and are attached to DOM elements with the following id's:

piwik_deny_consent
piwik_give_consent

What do you think? Do you see any problems with this kind of implementation?

Use Codacy instead of Landscape (replace badge)

@jezdez I just like to let you know that I requested access for the Codacy app on GitHub on probably the entire jazzband organization. What I intended was just for this repository.

Background: I'm about to phase out the Landscape service for monitoring our code quality and use Codacy instead. I'm also replacing the related badge at the top of the README.

I hope that's fine.

Not compatible with python 3?

I was trying to setup analytics for Walik's demo and it doesn't work with python 3.4.

(waliki)tin@morochita:~/lab/waliki$ pip install django-analytics
Downloading/unpacking django-analytics
  Downloading django-analytics-0.0.1.tar.gz
  Storing download in cache at /home/tin/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fd%2Fdjango-analytics%2Fdjango-analytics-0.0.1.tar.gz
  Running setup.py (path:/home/tin/.virtualenvs/waliki/build/django-analytics/setup.py) egg_info for package django-analytics

Downloading/unpacking django-geckoboard>=1.1.0 (from django-analytics)
  Downloading django-geckoboard-1.2.8.tar.gz
  Storing download in cache at /home/tin/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fd%2Fdjango-geckoboard%2Fdjango-geckoboard-1.2.8.tar.gz
  Running setup.py (path:/home/tin/.virtualenvs/waliki/build/django-geckoboard/setup.py) egg_info for package django-geckoboard

Installing collected packages: django-analytics, django-geckoboard
  Running setup.py install for django-analytics

      File "/home/tin/.virtualenvs/waliki/lib/python3.4/site-packages/analytics/maintenance.py", line 60
        print _("Scanning %(app)s for metrics...") % {'app': import_app}
              ^
    SyntaxError: invalid syntax

      File "/home/tin/.virtualenvs/waliki/lib/python3.4/site-packages/analytics/management/commands/metrics.py", line 103
        print _("Metric(s) %(metric)s activated.") % {'metric': kwargs['activate']}
              ^
    SyntaxError: invalid syntax

      File "/home/tin/.virtualenvs/waliki/lib/python3.4/site-packages/analytics/geckoboard_views.py", line 25
        raise Exception, _("No array called '%(varname)s' in GET variables") % {'varname': var_name}
                       ^
    SyntaxError: invalid syntax

      File "/home/tin/.virtualenvs/waliki/lib/python3.4/site-packages/analytics/calculator.py", line 40
        print _("No data for metric %(metric)s, skipping.") % {'metric': metric.title}
              ^
    SyntaxError: invalid syntax

  Running setup.py install for django-geckoboard
      File "/home/tin/.virtualenvs/waliki/lib/python3.4/site-packages/django_geckoboard/decorators.py", line 348
        raise RuntimeError, "Key %s is required" % key
                          ^
    SyntaxError: invalid syntax

Can I fetch and Display Analytic reports?

I want to fetch the top posts on my blog based on monthly views and display them on the sidebar, I am not sure if I can do that using django-analytical, can someone confirm?

Clickmap doesn't work with new ID's

My guess is clickmap changed their ID format because mine looks like WVXXXWX5UGKXXX0F16021157XXI3PYX8 and your code seems to have a check in place to only accept a numeric ID

avoiding 'RequestContext' object has no attribute 'items'

I use TEMPLATE_CONTEXT_PROCESSORS to chuck in some extra context for olark (nickname, email, fullname, translations etc). I have a whole bunch of views that do somthing like this:

def tutorials_view(request):
    return render_to_response('tutorials.html', RequestContext(request))

They throw the items error. Those I can fix to use the proper render or context_instance= methods as you recommend in the tutorials but it doesn't fix views I have from external modules and so forth.

However using regex on the context seems to work on all views:

def _get_configuration(self, context):
        code = []
        matches = re.findall(r"olark_[a-zA-Z_]*", str(context))
        for m in matches:
            key = m[6:]
            if key in MESSAGE_KEYS:
                code.append(MESSAGE_CODE % {'key': key, 'msg': context[m]})
        return code

instead of

def _get_configuration(self, context):
        code = []
        for dict_ in context:
            for var, val in dict_.items():
                if var.startswith('olark_'):
                    key = var[6:]
                    if key in MESSAGE_KEYS:
                        code.append(MESSAGE_CODE % {'key': key, 'msg': val})
        return code

Any reason why not to use the regex method (performance???)

Heap Integration

Hey,
Thanks for developing django-analytical I think it's great.
Would really love it to have a Heap Analytics integration (http://heapanalytics.com) as their service is excellent.

Would be happy to try contribute it myself if somebody wouldn't mind checking over my code? (open source noob!)

Cheers

Photos or samples of analytics

The fact that Django says it has analytics is good, but as a new user, there is no "this is what this analytics" look like so I am forced to read the code and hope that I understand what each module creates?

Couldn't you take a screenshot of what these python files create so we can see if this is what we are looking for?

Support Inspectlet

Rather useful tool. https://www.inspectlet.com/

I dont have time to write a PR for this myself yet, but I'm sure I'll have to clean up my analytics integrations eventually, and such a PR may be the easiest way to do it. In the mean time I'll just leave this here in case anyone else wants to do it before I get to it.

New Clicky tracking code?

Hi there,

I have been trying to get django-analytical up with Clicky on my site this weekend. Finally seem to have got it up after putting the tracking code I got form the Clicky site in the click.py in the templatetags folder (it's substantially different).

Maybe they have changed the tracking code recently?

Anyway - looks awesome. Now all I need to do is work out how to integrate usernames! Any help appreciated.

(This is the first github contribution from a self-taught coder so please be nice!)

UPDATE - still having some problems actually. Have had to comment out the following lines to stop an error, but Clicky appears to be working (though can't seem to see any usernames):

for dict_ in context:

for var, val in dict_.items():

if var.startswith('clicky_'):

custom[var[7:]] = val

The error was "'RequestContext' object has no attribute 'items'". Sorry I don't have more info!

SETTING_DELETED isn't working as intended

Hi Joost,

I think I've caught a subtle bug in how get_required_setting handles SETTING_DELETED.

As I understand it, when you set a settings key to SETTING_DELETED via @override_settings you intended for it to raise an AttributeError when retrieved via get_required_setting.

However, instead of raising an AttributeError in the getattr call -- as I think you intended it -- it's instead failing the regexp check. This line returns a valid DeletedSettingDescriptor object that then proceeds to raise AnalyticalException because it never matches the supplied regexp.

The end result is all the tests that rely on a missing settings key raising an AnalyticalException pass, but not for the intended reasons.

I played around with the code a bit and think I figured out a way around it. You can see the commits here: edavis/django-analytical@master...setting-deleted

2a1e2d3 is the meat of the fix while the other two are more cosmetic but override_settings related. Basically, I check if a value is set to SETTING_DELETED and if it is I delattr it from self.default_settings which is where the value appears to come from. All the tests still pass and stepping through it with a debugger shows it raising an AttributeError as expected in the getattr call in get_required_setting.

I'm far from an expert on Django's settings machinery, but I think this should do it. If you're interested, feel free to pull from my setting-deleted branch.

Failing tests (perhaps) related to settings_manager

Hi,

I've ran into a few problems while running django-analytical's test suite. The root of the problems appear to be related settings_manager and its calling of syncdb when INSTALLED_APPS is passed in.

Below, in a freshly created Django 1.3 environment using sqlite3 without South or anything, _get_domain returns the default Site object's domain even though the test (analytical.ChartbeatTagTestCase.test_rendering_setup_no_site) filters out django.contrib.sites. This causes the test to fail because it isn't expecting domain in _sf_async_config.

.....F........................................................................................................
======================================================================
FAIL: test_rendering_setup_no_site (analytical.tests.test_tag_chartbeat.ChartbeatTagTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/eric/scratch/test_chartbeat/lib/python2.6/site-packages/analytical/tests/test_tag_chartbeat.py", line 66, in test_rendering_setup_no_site
    self.assertTrue('var _sf_async_config={"uid": "12345"};' in r, r)
AssertionError: False is not True : 
    <script type="text/javascript">
      var _sf_async_config={"domain": "example.com", "uid": "12345"};
      (function(){
        function loadChartbeat() {
          window._sf_endpt=(new Date()).getTime();
          var e = document.createElement('script');
          e.setAttribute('language', 'javascript');
          e.setAttribute('type', 'text/javascript');
          e.setAttribute('src',
             (("https:" == document.location.protocol) ? "https://a248.e.akamai.net/chartbeat.download.akamai.com/102508/" : "http://static.chartbeat.com/") +
             "js/chartbeat.js");
          document.body.appendChild(e);
        }
        var oldonload = window.onload;
        window.onload = (typeof window.onload != 'function') ?
           loadChartbeat : function() { oldonload(); loadChartbeat(); };
      })();
    </script>


----------------------------------------------------------------------
Ran 110 tests in 0.334s

FAILED (failures=1)

And in another project with more apps and using South, an attempt is made to create a table that already exists. Here is the output: https://gist.github.com/1051542. settings_manager.syncdb is in the traceback of each failure, so I'm assuming everything here is related.

Any ideas? Do you get the same test failures?

RFC: python3 support (which would mean dropping atleast 2.5)

Hi, since django 1.5 was just released with preliminary python 3 support, i think it's a good time to discuss what python3 support would mean for this app.

There are pieces of code that simply are impossible to do in a way that is supported from python2.5 up to 3.3 :( e.g. exception handling (http://stackoverflow.com/questions/11285313/try-except-as-error-in-python-2-5-python-3-x)

What are your thoughts about this? Is dropping python < 2.7 support even worth considering?

Javascript runs afoul of content security policy

On sites that have a HTTP content security policy that is not "unsafe-inline", the analytics Javascript fails to execute. One solution would be to let users specify a string in the settings that is inserted into the <script> opening tag.

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.