Git Product home page Git Product logo

core-bundle's Introduction

Contao core bundle

Contao is an Open Source PHP Content Management System for people who want a professional website that is easy to maintain. Visit the project website for more information.

Contao has been designed as a Symfony bundle, which can be used to add CMS functionality to any Symfony application. If you do not have an existing Symfony application yet, we recommend using the Contao managed edition as basis for your application.

Prerequisites

The Contao core bundle has a recipe in the symfony/recipes-contrib repository. Be sure to either enable contrib recipes for your project by running the following command or follow the instructions to use the contrib recipe during the installation process.

composer config extra.symfony.allow-contrib true

Add the contao-component-dir to the extra section of your composer.json file.

composer config extra.contao-component-dir assets

Installation

Install Contao and all its dependencies by executing the following command:

composer require \
    contao/core-bundle:4.8.* \
    php-http/guzzle6-adapter:^1.1

Note that you can exchange the php-http/guzzle6-adapter package with any other HTTP client implementation. If you already have an HTTP client implementation, you can omit the package entirely.

Configuration

Configure the DATABASE_URL in your environment, either using environment variables or by using the Dotenv component.

Enable ESI in the config/packages/framework.yaml file.

framework:
    esi: true

Add the Contao routes to your config/routing.yaml file, and be sure to load the ContaoCoreBundle at the very end, so the catch-all route does not catch your application routes.

ContaoCoreBundle:
    resource: "@ContaoCoreBundle/config/routes.yaml"

Edit your config/security.yaml file and merge all the providers, encoders, firewalls and access_control sections:

security:
    password_hashers:
        Contao\User: auto
        Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: auto

    providers:
        contao.security.backend_user_provider:
            id: contao.security.backend_user_provider

        contao.security.frontend_user_provider:
            id: contao.security.frontend_user_provider

    firewalls:
        contao_backend:
            request_matcher: contao.routing.backend_matcher
            provider: contao.security.backend_user_provider
            user_checker: contao.security.user_checker
            switch_user: true
            login_throttling: ~

            login_link:
                check_route: contao_backend_login_link
                signature_properties: [username, lastLogin]
                success_handler: contao.security.authentication_success_handler

            contao_login:
                remember_me: false

            logout:
                path: contao_backend_logout

        contao_frontend:
            request_matcher: contao.routing.frontend_matcher
            provider: contao.security.frontend_user_provider
            user_checker: contao.security.user_checker
            access_denied_handler: contao.security.access_denied_handler
            switch_user: false
            login_throttling: ~

            contao_login:
                remember_me: true

            remember_me:
                secret: '%kernel.secret%'
                remember_me_parameter: autologin
                token_provider:
                    doctrine: true

            logout:
                path: contao_frontend_logout

    access_control:
        - { path: ^%contao.backend.route_prefix%/login$, roles: PUBLIC_ACCESS }
        - { path: ^%contao.backend.route_prefix%/logout$, roles: PUBLIC_ACCESS }
        - { path: ^%contao.backend.route_prefix%(/|$), roles: ROLE_USER }
        - { path: ^/, roles: [PUBLIC_ACCESS] }

The Contao core-bundle is now installed and activated. Use the contao:migrate command to upgrade the database and the contao:user:create command to create your first back end user.

License

Contao is licensed under the terms of the LGPLv3.

Getting support

Visit the support page to learn about the available support options.

core-bundle's People

Contributors

a-v-l avatar ameotoko avatar aschempp avatar ausi avatar backbone87 avatar bezin avatar bytehead avatar cliffparnitzky avatar dennisbohn avatar discordier avatar dmolineus avatar fritzmg avatar gmpf avatar leofeyer avatar m-vo avatar marcobiedermann avatar markejn avatar mynyx avatar psi-4ward avatar qzminski avatar rabauss avatar richardhj avatar serhii-dv avatar severingloeckle avatar toflar avatar tristanlins avatar volkerrichert avatar xchs avatar zoglo avatar zonky2 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  avatar  avatar  avatar  avatar  avatar

core-bundle's Issues

Recreate the `files` folder symlinks on folder rename

Issue by @xchs
Saturday Jun 14, 2014 at 02:02 GMT

It could be reasonable to automatically update the files folder symlinks once the symlink target folder is renamed.

As it is now, we would always have to run the maintenance job to recreate the respective symlinks again:

  • Create a new folder foo in the "File manager" and enable the "Public" attribute to make it become publicly accessible. This should create the corresponding symlink (foo -> ../../files/foo) in the web/files directory.
  • Now, rename the folder foo to e.g. bar
  • In the web/files directory there is still a symlink foo that points to the target folder ../../files/foo, which, however, in the meantime no longer exists.
  • Finally, run the "Recreate the symlinks" maintenance job to update the symlink accordingly

In short: similar to the DBAFS synchronization it might come in handy to perform immediately a symlink update job as well.

Replace debug mode with Symfony environment

Issue by @aschempp
Tuesday Dec 23, 2014 at 09:05 GMT

I think we've discussed this before, but let's do it here to get a decision.

We should use app.php and app_dev.php – the Symfony default – as entry scripts. The app_dev would be dev environment and should set $GLOBALS['TL_CONFIG']['debugMode'] = true; for legacy reasons.

Can we vote on the topic?

Configuration file format

Issue by @aschempp
Monday Jan 05, 2015 at 13:07 GMT

I know this has been discussed before, but we should "write down" the final decision regarding configuration file format.

Afair @leofeyer said we should use YAML because it's easer, but later on said we could potentially use XML. Now I noticed Symfony core bundles seem to use XML everywhere, and I also read that XML supports more features. I also find it more readable.

I like Christian's idea of using XML for bundles but YAML for the application in general.

Can we vote on the topic?

Frontend-Preview Nachrichten / Events

Issue by @SGehle
Wednesday Feb 11, 2015 at 16:30 GMT

Hallo!
Wäre es nicht sinnvoll, wenn beim Klick auf die Frontend-Preview beim bearbeiten einer Nachricht oder eines Events der entsprechende Eintrag angezeigt wird anstelle der Startseite der Webseite?
Wenn ein Artikel bearbeitet wird, wird ja in der Vorschau auch direkt die Seite des Artikels geladen.

4.0.0-alpha2: Fatal error: Class 'Contao\BackendInstall' not found in /htdocs/contao4/web/contao/install.php on line 27

Issue by @BugBuster1701
Saturday Jun 21, 2014 at 20:18 GMT

Install Aufruf bringt diese Meldung.
Installiert wurde die alpha2 mittels der Release ZIP (grüner Button)
Das Verzeichnis vendor/contao/module-core fehlt.

Warning: include(/htdocs/contao4/vendor/contao/module-core/src/controllers/BackendInstall.php): failed to open stream: No such file or directory in vendor/composer/ClassLoader.php on line 377

#0 vendor/composer/ClassLoader.php(377): __error(2, 'include(/htdocs/contao4/...', '/htdocs/contao4/...', 377, Array)
#1 vendor/composer/ClassLoader.php(377): Composer\Autoload\includeFile()
#2 vendor/composer/ClassLoader.php(269): Composer\Autoload\includeFile('/htdocs/contao4/...')
#3 [internal function]: Composer\Autoload\ClassLoader->loadClass('Contao\\BackendI...')
#4 web/contao/install.php(27): spl_autoload_call('Contao\\BackendI...')
#5 {main}


Warning: include(): Failed opening '/htdocs/contao4/vendor/contao/module-core/src/controllers/BackendInstall.php' for inclusion (include_path='.:/usr/local/php5.4.10-cgi/lib/php') in vendor/composer/ClassLoader.php on line 377

#0 vendor/composer/ClassLoader.php(377): __error(2, 'include(): Fail...', '/htdocs/contao4/...', 377, Array)
#1 vendor/composer/ClassLoader.php(377): Composer\Autoload\includeFile()
#2 vendor/composer/ClassLoader.php(269): Composer\Autoload\includeFile('/htdocs/contao4/...')
#3 [internal function]: Composer\Autoload\ClassLoader->loadClass('Contao\\BackendI...')
#4 web/contao/install.php(27): spl_autoload_call('Contao\\BackendI...')
#5 {main}


Fatal error: Class 'Contao\BackendInstall' not found in /htdocs/contao4/web/contao/install.php on line 27

Cannot load resource ".".

Issue by @leofeyer
Sunday Jun 29, 2014 at 19:33 GMT

Right now, Symfony does not fully support the custom route we are using for our front end router. If you e.g. try to run app/console cache:clear on the command line, it will throw an Exception:

[Symfony\Component\Config\Exception\FileLoaderLoadException]  
Cannot load resource ".".

@aschempp @contao/developers

Fix installing Contao via Composer

Issue by @leofeyer
Tuesday Jul 08, 2014 at 14:21 GMT

git clone https://github.com/contao/contao.git
cd contao
git checkout develop
composer install

Fails due to the missing parameters.yml file:

[Symfony\Component\Config\Exception\FileLoaderLoadException]                                                                                                                                            
Cannot import resource "parameters.yml" from "/Users/leofeyer/Downloads/contao/app/config/config.yml". (The file "parameters.yml" does not exist (in: /Users/leofeyer/Downloads/contao/app/config, ).)

Open questions regarding the Symfony integration

Issue by @leofeyer
Thursday Jun 19, 2014 at 19:00 GMT

Questions to discuss at the upcoming Mumble call:

  • How do we inject the Contao configuration?
  • How do we integrate the DI container?
  • How do we integrate the event dispatcher?
  • How do we minimize the number of duplicate files (see #10-comment46790152)?
  • Do we want the back end to go through the Symfony router?
  • Should we boot the kernel in dev mode if the Contao debug mode is enabled?

Errors on Installation with 3.4.2

Issue by @hostianer
Monday Jan 26, 2015 at 14:57 GMT

MAMP Pro PHP 5.6.2, local on OSX.
Also tested with PHP 5.5.18

Version 3.4.0 is working without problems.

If i go to the /install.php i`m getting these errors:

Notice: Undefined index: HTTP_X_FORWARDED_HOST in /Applications/MAMP/htdocs/pixelianer/system/modules/core/library/Contao/Environment.php on line 302 

Notice: Undefined index: SSL_SESSION_ID in /Applications/MAMP/htdocs/pixelianer/system/modules/core/library/Contao/Environment.php on line 313 

Notice: Undefined index: HTTPS in /Applications/MAMP/htdocs/pixelianer/system/modules/core/library/Contao/Environment.php on line 313 

Notice: Undefined index: HTTPS in /Applications/MAMP/htdocs/pixelianer/system/modules/core/library/Contao/Environment.php on line 313 

Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/pixelianer/system/modules/core/library/Contao/Environment.php:302) in system/modules/core/library/Contao/Controller.php on line 2125 
#0 [internal function]: __error(2, 'Cannot modify h...', '/Applications/M...', 2125, Array) 
#1 system/modules/core/library/Contao/Controller.php(2125): header('HTTP/1.1 303 Se...') 
#2 system/modules/core/controllers/BackendInstall.php(315): Contao\Controller::reload() 
#3 system/modules/core/controllers/BackendInstall.php(80): Contao\BackendInstall->acceptLicense() 
#4 contao/install.php(24): Contao\BackendInstall->run() 
#5 {main} 

Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/pixelianer/system/modules/core/library/Contao/Environment.php:302) in system/modules/core/library/Contao/Controller.php on line 2126 
#0 [internal function]: __error(2, 'Cannot modify h...', '/Applications/M...', 2126, Array) 
#1 system/modules/core/library/Contao/Controller.php(2126): header('Location: http:...') 
#2 system/modules/core/controllers/BackendInstall.php(315): Contao\Controller::reload() 
#3 system/modules/core/controllers/BackendInstall.php(80): Contao\BackendInstall->acceptLicense() 
#4 contao/install.php(24): Contao\BackendInstall->run() 
#5 {main}  

Use `utf8mb4` as default charset for MySQL

Issue by @leofeyer
Wednesday Nov 12, 2014 at 09:27 GMT

To fully support Unicode in MySQL, we should use utf8mb4 as the default charset (see contao/core#7140). However, this would effectively raise the system requirements to MySQL 5.5.3+.

@contao/developers Is this something that we should consider in Contao 4? I don't know how many hosting companies are still running MySQL 5.0 or 5.1? The ones I know have MySQL 5.5 (or MariaDB).

Use the Symfony request response

Issue by @leofeyer
Saturday Jul 26, 2014 at 10:52 GMT

The Contao template should not echo the output and exit but return its output to the Symfony front end controller, so the Symfony request response routines are fully run.

Two different approaches to Symfony Security/Firewall

Issue by @aschempp
Monday Feb 09, 2015 at 11:19 GMT

I have read up and tested the Symfony Security component to find out how it can be integrated in Contao 4. I think we all agree that we should provide some sort of integration, meaning the visitor could be authenticated inside Symfony components, the profilter etc.

Background on Security and Firewalls

Symfony uses a so called "firewall" to protect access and authenticate users. In our case, we will need two Symfony firewalls because we have two different users for fronted and backend. Each firewall is independently configured, e.g. how the user authentication works.

Authentication vs. Authorization

There is a clear difference between authenticating a user and authorizing access to something in the Symfony security component. We're only talking about authentication here. More info on the topic can be found at http://symfony.com/doc/current/book/security.html

Implementation options

I came up with two different approaches how to deal with the user authentication.

Using Contao to authenticate Symfony firewalls

Draft at aschempp/contao-core-bundle@aschempp:feature/no-disableAlias...feature/security

In this approach we use the existing Contao BackendUser and FrontendUser to authenticate the visitor. The existing Contao classes are basically kept exactly as the are.

On the Symfony side, we add our own authentication management. Instead of letting Symfony store information about the current user in the session, we use the so-called stateless option to authenticate the Symfony user on every request by asking the Contao user. As an example, this is similar to using an API token in Symfony to identify the user (it's actually built on that).

Pros

  • The Contao user classes are kept as they are and are 100% backwards compatible
  • People familiar with the Contao authentication system will still know how it works
  • It is still possible to add Symfony security voters to use Symfony for access authorization.

Replacing Contao authentication with Symfony firewalls

Draft at aschempp/contao-core-bundle@aschempp:feature/webprofiler...feature/advanced-security currently only for backend user.

The second approach would be to replace the Contao authentication with Symfony security components. Symfony has several built-in user authentication methods, like form login or remember-me cookie.

Pros

  • The full power and flexibility of Symfony authentication can be used
  • Symfony developers will be familiar with how it works
  • It would much easier to add new authentication methods like Facebook or Twitter login
  • Developers can use third-party bundles to add new features (see http://knpbundles.com/keyword/authentication)
  • We can still support BackendUser/FrontendUser for legacy reasons, though the stuff like tl_session table needs to be re-engineered.

Conclusions

I think using the Symfony security/authentication should/will be the "long-termin solution" anyways. It's "only" a question of "when". To me, it's a matter of how much effort we want and can invest into this topic. Adding Contao authentication (option 1) will be much easier in the first place, but I don't know if it will limit the advantages of Contao 4 and the Symfony integration.

/cc @leofeyer @Toflar @discordier

Do not hardcode bundles in AppKernel

Issue by @aschempp
Friday Oct 31, 2014 at 22:42 GMT

Hardcoding the FrameworkBundle in the AppKernel will result in an exception, if the FrameworkBundle is added to the autoload.json

Fatal error: Uncaught exception 'LogicException' with message 'Trying to register two bundles with the same name "FrameworkBundle"'

We should only use the bundle autoloading and add the basic requirements to the autoload.json. This would also mean we can change them without affecting the distribution repo.
I can provide PRs if you prefer that.

Contao framework not initialized upon invalid route

If you enter a URL that is not matched by a route (e.g. http://contao.local/), the Contao framework does not get initialized:

Fatal error: Class 'Contao\Frontend' not found in ~/contao/standard-edition/vendor/contao/core-bundle/src/EventListener/OutputFromCacheListener.php on line 31

The problem is that the Symfony exception listener is a sub request and we have recently added the following lines:

// InitializeSystemListener::onKernelRequest()
if (!$event->isMasterRequest()) {
    return;
}

@aschempp How do we handle this case?

Move editors to separate plugin

Issue by @fbender
Sunday Jun 15, 2014 at 11:12 GMT

To reduce complexity as well as improve flexibility and reusability, I propose to remove TinyMCE and ACE from Contao 4 and instead create separate plugins for both. A standard installation could (and should!) still include those plugins by default (through a Composer dependency), or even propose alternatives like CKEditor or CodeMirror (or no editor at all) during installation.

Benefits:

  • Those who don't want or need an editor can reduce the footprint of their Contao installation.
  • Users can choose an editor to their liking, e.g. a minimal or especially accessible one.
  • Editors can be updated independently of Contao.
  • Development can be handled by the community (though the default editors should always work with any release or beta version – but since the changes required are mostly minimal, this is not a big issue).
  • Reuse what is available through Composer – don't know if there are packages for other projects but if there are, it may be interesting to see if we can somehow merge efforts here.

backend icons missed

Issue by @magicsepp
Wednesday Jun 11, 2014 at 15:01 GMT

Articles icon is seen, Events and others parts of system/modules are missed!
part of the generated html:

<li>
<a class="navigation news" title="" href="contao/main.php?do=news&ref=ded81d14">News</a>
</li>
<li>
<a class="navigation calendar" style="background-image:url('system/modules/calendar/assets/icon.gif')" title="" href="contao/main.php?do=calendar&ref=ded81d14">Events</a>
</li>

for the background path I got a 404 not found message

Suche - "oee" wird zu "o" normalisiert

Issue by @Domi1244
Monday Feb 02, 2015 at 16:33 GMT

Ins Formular habe ich "oee" eingegeben. Ergebnisse hierfür bekam ich weit über 100. Kaum eine der Seiten beinhaltete allerdings das Wort.
Ich habe ein wenig nachgeforscht und herausgefunden, dass die Zeile

$strKeywords = mb_eregi_replace('[^[:alnum:] \*\+\'"\.:,_-]|\. |\.$|: |:$|, |,$', ' ', $strKeywords);

in der Search.php mir aus "oee" "o " macht, wodurch die vielen Treffer natürlich Sinn ergeben.

Wenn ich die Funktion und die if außenrum entferne und somit die Fallback funktion "preg_replace" greift, habe ich nur noch 4 Ergebnisse, die auch alle zutreffen, allerdings habe ich dann Probleme mit echten Umlauten. Kann man da etwas machen?

Update the (sub)folder lock status

Issue by @xchs
Wednesday Jun 11, 2014 at 22:24 GMT

When I change the access rights for a given folder structure by setting the "Public" attribute in the folder settings it seems that the lock status icon for the subfolders does not change accordingly.

How to reproduce:

  • Set up a new Contao 4.0.0-alpha1 installation
  • Import e.g. the COD example website
  • Open the "File manager" back end module
  • Do not expand the node for the contaodemo folder
  • Enable the option "Public" in the contaodemo folder settings
  • Expand the contaodemo folder node
  • The subfolder icons still show the lock status symbol

Perhaps it is somehow related with the expand / collapse Ajax call since it works as expected when all nodes are expanded before the "Public" setting is changed.

Install 4.0 alpha2 from github

Issue by @katgirl
Tuesday Jul 08, 2014 at 14:41 GMT

git clone https://github.com/contao/contao.git contao-4
cd contao-4
curl -sS https://getcomposer.org/installer | php
php composer.phar install --prefer-dist

Script system/bin/automator generateSymlinks handling the post-update-cmd event returned with an error

Exception trace:
 () at phar:///var/www/virtual/kat42/contao-4/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php:144
 Composer\EventDispatcher\EventDispatcher->doDispatch() at phar:///var/www/virtual/kat42/contao-4/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php:103
 Composer\EventDispatcher\EventDispatcher->dispatchCommandEvent() at phar:///var/www/virtual/kat42/contao-4/composer.phar/src/Composer/Installer.php:300
 Composer\Installer->run() at phar:///var/www/virtual/kat42/contao-4/composer.phar/src/Composer/Command/UpdateCommand.php:128
 Composer\Command\UpdateCommand->execute() at phar:///var/www/virtual/kat42/contao-4/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:241
 Symfony\Component\Console\Command\Command->run() at phar:///var/www/virtual/kat42/contao-4/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:892
 Symfony\Component\Console\Application->doRunCommand() at phar:///var/www/virtual/kat42/contao-4/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:191
 Symfony\Component\Console\Application->doRun() at phar:///var/www/virtual/kat42/contao-4/composer.phar/src/Composer/Console/Application.php:117
 Composer\Console\Application->doRun() at phar:///var/www/virtual/kat42/contao-4/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:121
 Symfony\Component\Console\Application->run() at phar:///var/www/virtual/kat42/contao-4/composer.phar/src/Composer/Console/Application.php:83
 Composer\Console\Application->run() at phar:///var/www/virtual/kat42/contao-4/composer.phar/bin/composer:43
 require() at /var/www/virtual/kat42/contao-4/composer.phar:15

Make public extension folders configurable

Issue by @leofeyer
Thursday Jun 19, 2014 at 15:10 GMT

Right now the autoloader just symlinks the extension folders assets/ and themes/ into the public web/ directory. However, it should be possible to configure other folders in the autoload.ini file.

Remove the JS library dependency

Issue by @leofeyer
Monday Sep 01, 2014 at 19:07 GMT

Scripts like Swipe and highlight.js do not depend on MooTools or jQuery, still their templates can only be added to the page layout if either MooTools or jQuery is activated. There should be a new category just like "analytics scripts".

Remove "disableAlias" mode

Issue by @aschempp
Monday Feb 02, 2015 at 11:55 GMT

The disableAlias mode does not generate URLs with index.php/alias.html, instead it uses index.php?id=5.

I think we should drop this in Contao 4. Can anyone remember why this was supported in the first place? I remember something about old IIS support…

Opinions/votes?

Install tool: fatal error after database connection setup

Issue by @xchs
Tuesday Jun 10, 2014 at 21:04 GMT

The Contao 4.0.0-alpha1 install tool throws a fatal error when it comes to the database connection setup:

Fatal error: Uncaught exception Exception with message Query error: Table 'contao4.tl_user' doesn't exist (SELECT COUNT(*) AS count FROM tl_user WHERE admin=1) thrown in vendor/contao/contao-library/src/Contao/Database/Statement.php on line 283

#0 vendor/contao/contao-library/src/Contao/Database/Statement.php(254): Contao\Database\Statement->query()
#1 vendor/contao/contao-library/src/Contao/Database.php(190): Contao\Database\Statement->execute()
#2 vendor/contao/module-core/src/controllers/BackendInstall.php(577): Contao\Database->execute('SELECT COUNT(*)...')
#3 vendor/contao/module-core/src/controllers/BackendInstall.php(191): Contao\BackendInstall->createAdminUser()
#4 web/contao/install.php(26): Contao\BackendInstall->run()
#5 {main}

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.