Git Product home page Git Product logo

davis's People

Contributors

ajgon avatar codiflow avatar lightmaster avatar marc2016 avatar ramblurr avatar tandy-1000 avatar tchapi 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

davis's Issues

Composer hints, dav update and openssl issue

Hey,

there are three things I'd like to mention:

  1. During composer install there is the following output:
Package zendframework/zend-eventmanager is abandoned, you should avoid using it. Use laminas/laminas-eventmanager instead.
Package zendframework/zend-code is abandoned, you should avoid using it. Use laminas/laminas-code instead.
  1. Dav was updated to version 4.1.0. Would be nice to see this integrated.

  2. After updating to openssl 1.1.1.e this issue came up. I don't know if there is anything there can be done about it in davis/dav to make both peers always send the close notify correctly or if it needs a(n additional) fix from apple for the clients. I downgraded to openssl 1.1.1.d for now.

Thanks in advance. I hope you are doing well.

Using CalDav with iOS

i tried to use DAVis with iOS and can't connect to the server:

In Thunderbird with Lightning everything works fine, but with iOS i got these error messages:

[30/Jul/2021:10:43:02 +0000] "PROPFIND /dav/principals/dennis/ HTTP/1.1" 401 3552 "-" "iOS/14.7.1 (18G82) accountsd/1.0"
[30/Jul/2021:10:43:03 +0000] "PROPFIND /dav/principals/dennis/ HTTP/1.1" 207 3676 "-" "iOS/14.7.1 (18G82) accountsd/1.0" [30/Jul/2021:10:43:03 +0000] "OPTIONS /dav/principals/dennis/ HTTP/1.1" 200 967 "-" "iOS/14.7.1 (18G82) accountsd/1.0"

No longer working after update to 1.5.0

Hey,

thanks for the next update. Unfortunately after updating to 1.5.0 neither the webinterface nor the client sync works.

I did not change anything on the nginx side or in the .env file.

I get this in the browser trying to open the webinterface:

Oops! An Error Occurred
The server returned a "500 Internal Server Error".
Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.

Please let me know if you need anything to debug or find a possible wrong configuration on my side.

Downgrading to 1.4.9 solves the issue.

Thanks

after install Docker new Users cannot login

Hello,

i just installed Davis with Docker-Compose as described. it worked fine, only Web-Dav is disabled.
But after i created several Users, no user but Admin can login.
I get this message: Username could not be found.
But i checked in the Database: Davis in Table users is an entry for each User i created, with a hashed password, i guess.

Did i do something wrong?

regards

v.1.9.0 Docker image does not work: after spinnup only "file not found"

Hi,
I am just trying to setup the server with the current docker image you published.
Unfortunately, there seems to be something wrong with the permissions inside the container.
When you start the container and try to access it, you only get a "file not found". I tried to correct the permission inside the container, but unfortunately I failed. After some corrections I now get a 500-Error.
EDIT: I tried to start with the "Full-Stack". but as described it starts an builds the container right, but when you try to access the frontend, it just give the error.

Could you please check, what might be wrong with the permission setup?

Cheers Thorsten

An easier way to use different database driver in Docker.

First of all, thanks for this amazing app!

I have a question, if it would be possible to make it easier to select a different database driver in dockerized Davis? Current image includes only the pdo_mysql package. Furthermore, the driver is hard-coded in doctrine.yaml.

While the first issue is trivial to solve, I couldn't handle the second one as I don't know PHP/Symfony at all. So right now, I patch the doctrine.yaml file at a build-time.

Ideally, there would be an env variable, say DB_DRIVER, to choose among available drivers at a run-time.

By the way, is there any reason for not using Alpine as the base image? I have created a self-contained image with "all batteries included" (nginx, imap, ldap, pdo_mysql, pdo_pgsql, pdo_sqlite) which weights only 122 MB compared to 576 MB ghcr.io/tchapi/davis:edge. Would there be any interest in upstreaming it?

Production environment hardening: underlying Sabre/DAV accessible through HTTP.

This might be an error on my part because of permissions or setup: while testing login through IMAP, I accessed http://www.example.com/dav/ with my browser and got a login prompt. I provided a user (non admin) credentials and after success (yay!) I was redirected to the underlying Sabre/DAV framework. I can fully navigate all the nodes and structures.

Is this intentional? Is this a misconfiguration issue on my end? I'm using Nginx and I pasted the example config (just added SSL and my env vars).

image

NOTICE: PHP message: Can't open mailbox null: no such mailbox

I'm trying to use IMAP authentication but I keep getting:

NOTICE: PHP message: Can't open mailbox null: no such mailbox
172.18.0.4 - [email protected] 07/Jun/2022:23:38:36 +0000 "GET /index.php" 401

I'm using docker-compose to spin it up, and for testing these variables:

AUTH_REALM=SabreDAV
AUTH_METHOD=IMAP
IMAP_AUTH_URL="{blizzard.mxrouting.net:993/imap/ssl/novalidate-cert}"
IMAP_AUTH_USER_AUTOCREATE=true

I've confirmed via telnet that the server can connect to blizzard.mxrouting.net:993. However, I can also confirm that it isn't reaching out to blizzard.mxrouting.net at all. Nothing on Dovecot logged for it. Any thoughts on the subject appreciated!

Http basic auth support?

A lot of self-hosted webservices support so called http basic auth, that simply returns a 200 code if the username and password are correct.

Would be nice if this could be added as another auth option to Davis.

Specifically I would like to auth against this:
https://modules.prosody.im/mod_http_auth_check.html

But I believe many other web-apps would be compatible.

Thanks!

Cannot edit event information after creating

I am testing on Apple Calendar and I am not sure what is the normal behaviour of calendar events is (for sure) but I believe you can edit the details after creating an event

Steps to reproduce

  • Add calendar to Apple Calendars as a caldav account
  • Create a new event and add an invitee
  • Send the invite
  • Cannot now change the title or the time/date/invites

If I create an event on an apple calendar then I am able to reopen the event and update the details. I don't know if this is a Davis thing or a Caldav thing or a sabre/dav thing. Please excuse all the things which I do not know! Any enlightenment from any one would be appreciated.

Feature Request: z-push?

Have you considered z-push integration at all so that users can use activesync instead of having to mess with caldav/carddav clients?

How to get detailled logs?

I am currently setting up Davis inside docker-compose and struggling to get the IMAP Auth working.

Unfortunately there seems to be no logging available which could be of any help for "Username could not be found."
I would expect to see some more details in the logs, e.g. if the IMAP server connection could be established, what the response of it was etc.

The only logging in docker-compose is this style:
11/May/2022:22:37:01 +0000 "POST /index.php" 302

macOS address book owner issue

Hey,

I don't know if this is a davis or a macOS issue.

In macOS it is possible to select a user in the Contacts.app and tell macOS that this contact is me. After that macOS uses the picture of this contact and sets it as login picture for my user and sets it everywhere the user picture is used.

In our current davis setup there is only one davis user that has an address book and on every mac this address book is used the same user is logged in to the carddav account.

Now if one macOS user specifies a contact to be him or her the picture for the macOS user on every mac that uses this address book changes and on every mac this selected user data used for the macOS user.

Is there a way to share an address book with another davis user like for calendars? I thought perhaps having one user that owns the address book and shares it to another user would be better and then login to the carddav account with different users on every mac.

Is our setup the recommended way for sharing an address book? If not what is the recommended way?

I hope I could explain the situation so it can be understood. If not do not hesitate to ask.

Thanks in advance

Composer version not specified, causing docker build failure

The Dockerfile doesn't specify a version in the command to grab and install composer. The newest versions are the 2.x branch, and that doesn't appear to be supported with your current plugins.

A quick fix is to change the Dockerfile compose install to be:
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --version=1.10.21 to grab the lastest releast of the 1.x branch.
I imagine best practice would be to migrate plugins to support version 2 though.

Can't delete read-only delegate

Steps to reproduce:

  1. Add a delegate (don't check "Give write access?")
  2. Delegate is added correctly.
  3. Click Remove button
  4. Confirm with "Yes" button
  5. Nothing happens, delegate is still listed

When giving write access while adding, I can remove the delegate as expected.

Can not sync events with invitations

Hey,

after my update to version 1.9.1 I can not sync events with invitations. On MacOS I get the error 500: for CalDAVWriteEntityQueueableOperation. I can not found any log messages for this error. Where can I find additional information?

Thanks in advance :-)

doctrine:migrations:migrate error using version 1.4.9

Hey,

thanks for the update. When updating to version 1.4.9 doctrine:migrations:migrate outputs on a first run:
[ERROR] The version "latest" couldn't be reached, there are no registered migrations.

On a second run the output is
The metadata storage is not up to date, please run the sync-metadata-storage command to fix this issue.

After some research adding ?serverVersion=mariadb-10.5.5 to the database url the output is back to:
[ERROR] The version "latest" couldn't be reached, there are no registered migrations.

Downgrading to version 1.4.8 outputs no errors and:
No migrations to execute.

I hope the database is still alright. Thanks for looking into it in advance.

Provide a Dark mode

Two options:

  • based on the user preference provided by the browser
  • based on a toggle accessible in the admin

Feature: Set custom base URL

It would be nice to be able to set a base path, so that Davis can be accessed from a subdomain like so: http://localhost/davis/

FR: Calendar sharing

Really nice work so far. Much appreciated.

It would be nice to also have the calendar sharing feature available in the UI.

Field 'calendarorder' doesn't have a default value

I am not exactly sure if this is a bug in davis, or the web calendar I am using. Maybe you have more knowledge on what exactly is going on:
Since 1.8.0, creating a new calendar fails with the error message:

SQLSTATE[HY000]: General error: 1364 Field 'calendarorder' doesn't have a default value

For now, I fixed it by adding the default value '0' to the 'calendarorder' column in the table 'calendarinstances'. But could this cause other problems?

I am using MariaDB 10.3.31on Ubuntu

Thank you :)

Docker-Compose installation gives Doctrine-Exception

Thanks for the great app.

I installed via docker-compose and the edge-image from the registry. Now the symfony-prod-log says my db-driver is not correct. Have a made a configuration-error?

Thanks for the help.

[2022-07-30T14:43:44.162669+02:00] request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception: "The given 'driver' mysql is unknown, Doctrine currently supports only the following drivers: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_sqlsrv, mysqli, sqlsrv" at /var/www/davis/vendor/doctrine/dbal/src/Exception.php line 91 {"exception":"[object] (Doctrine\\DBAL\\Exception(code: 0): The given 'driver' mysql is unknown, Doctrine currently supports only the following drivers: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_sqlsrv, mysqli, sqlsrv at /var/www/davis/vendor/doctrine/dbal/src/Exception.php:91)"} []

Calendar URL

Hi! What is the URL of the calendars and addressbooks? Thanks!

[Request] Could an official Docker image be published?

I'm wanting to run this through Docker, but I'd really like to avoid running third-party images if at all possible.
If you don't have the time that's fine, I'm just curious if it could be done since the needed stuff is already there.

Notes not working

Hey,

we would like to use the notes feature. I added a calendar (with only notes instance functionality to a new user) but when adding the account to iOS or macOS the connection to the server and the account works, but it only presents calendar and contacts as options, not notes. Is there anything that has to be activated or changed to use this?

Perhaps it does not have to be added as a calendar, but as a note specified in the first place.

Thanks for looking into it and for the help in advance

Kind regards

archlinux AUR package and more detailed install instructions

Hey,

first of all thanks a lot for this project and all the work that is put into it. Very much appreciated. I followed the restructuring at Baikal and it led me here ;)

I would really like to try this out. I´m a fan of automating installations and configurations. Unfortunately my knowledge here is limited and I need a few more details on this before I can start trying ;)

Is it possible to submit an AUR package for archlinux for easier installation?

In addition it would be very nice to have more detailed steps for the installation and configuration, for example:

  1. How and to which location to install the files in which exact steps, which ownership and permissions, etc.
  2. What steps regarding the datebase have to be done on a clean install after creating an empty mysql database if not migrating from baikal?
  3. I would like to try on archlinux with all packages up-to-date, nginx and php-fpm pool.
    What does the php-fpm pool have to look like? I attached my baikal php-fpm pool as a start.
    custom_baikal.txt
  4. Which value has to be set in nginx for fastcgi_param APP_SECRET ? Is it the app secret from here?

If this is ok for you I will post my progress here, after I have the above input, and ask if I have any questions until the step by step manual is complete for me and I will hand it back to you when done. I think this would help other users a lot in the future.

Thanks a lot in advance

Kind regards

No sign of invitations being sent

I'm running davis directly via Apache2 (no docker) and I can get events to sync w/no problem. However, even though I have configured the environment with both MAILER_DSN (using postfix on the same machine -- having tried both localhost and a FQDN for the smtp URL) and INVITE_FROM_ADDRESS, I see no signs in either [path-to-davis]/var/log/dev.log or in my system mail logs that there is any attempt to actually send an invitation.

I'm perfectly prepared to believe that I set something up wrong, but without even a clue in the logs, I'm at a loss for debugging this myself.

SQLite

Hey,

is it also possible to use sqlite?

regards ...

/dashboard not found

I just tried installing davis onto my server (just like described in the readme.md), but when trying to access the admin interface I'm getting an 404 error. What am I doing wrong here?

Error in prod.log after upgrading from version 1.8

Hi,

I've been running version 1.8.0 since release up until now, after upgrading to version 2.0.2 I get the following error in the prod.log:

[2022-07-25T17:00:26.224623+02:00] request.INFO: Matched route "dav". {"route":"dav","route_parameters":{"_route":"dav","_controller":"App\\Controller\\DAVController::dav","path":""},"request_uri":"https://<domain>/dav/","method":"PROPFIND"} []
[2022-07-25T17:00:26.224908+02:00] php.INFO: User Deprecated: Since symfony/security-guard 5.3: The "Symfony\Component\Security\Guard\Authenticator\GuardBridgeAuthenticator" class is deprecated, use the new authenticator system instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/security-guard 5.3: The \"Symfony\\Component\\Security\\Guard\\Authenticator\\GuardBridgeAuthenticator\" class is deprecated, use the new authenticator system instead. at /var/www/html/<domain>/vendor/symfony/security-guard/Authenticator/GuardBridgeAuthenticator.php:35)"} []
[2022-07-25T17:00:26.225496+02:00] security.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2022-07-25T17:00:26.225504+02:00] security.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Guard\\Authenticator\\GuardBridgeAuthenticator"} []
[2022-07-25T17:00:26.225511+02:00] security.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Guard\\Authenticator\\GuardBridgeAuthenticator"} []
[2022-07-25T17:00:26.229582+02:00] app.ERROR: [401]: Sabre\DAV\Exception\NotAuthenticated - No 'Authorization: Basic' header found. Either the client didn't send one, or the server is misconfigured. Login was needed for privilege: {DAV:}read on  [{"file":"/var/www/html/<domain>/vendor/sabre/dav/lib/DAVACL/Plugin.php","line":936,"function":"checkPrivileges","class":"Sabre\\DAVACL\\Plugin","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"propFind","class":"Sabre\\DAVACL\\Plugin","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/dav/lib/DAV/Server.php","line":1052,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/dav/lib/DAV/Server.php","line":984,"function":"getPropertiesByNode","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/dav/lib/DAV/Server.php","line":1662,"function":"getPropertiesIteratorForPath","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/dav/lib/DAV/Server.php","line":1647,"function":"writeMultiStatus","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/dav/lib/DAV/CorePlugin.php","line":346,"function":"generateMultiStatus","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpPropFind","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/html/<domain>/vendor/sabre/dav/lib/DAV/Server.php","line":253,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/html/<domain>/src/Controller/DAVController.php","line":294,"function":"start","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/html/<domain>/vendor/symfony/http-kernel/HttpKernel.php","line":152,"function":"dav","class":"App\\Controller\\DAVController","type":"->"},{"file":"/var/www/html/<domain>/vendor/symfony/http-kernel/HttpKernel.php","line":74,"function":"handleRaw","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/var/www/html/<domain>/vendor/symfony/http-kernel/Kernel.php","line":202,"function":"handle","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/var/www/html/<domain>/public/index.php","line":28,"function":"handle","class":"Symfony\\Component\\HttpKernel\\Kernel","type":"->"}] []

I haven't touched the nginx (1.20), php (8.0.13) or Thunderbird (102.0.3) configs, everything is the exact same.
I've gone back to version 1.8 for now and no such error is produced.

Any idea what/where the problem may be?

Thanks.

Automated Docker Hub build fails because file can't be copied

See the build.log for an automated build of 'master:/docker' (cb00eaa) on Docker Hub.

Source is configured as master, Build context is /docker.

Relevant error:

Step 7/12 : RUN cd /var/www/ && curl --silent -o ${version}.tar.gz -L https://github.com/tchapi/davis/archive/v${version}.tar.gz && tar xvzf ${version}.tar.gz && mv -f /var/www/davis-${version} /var/www/davis && rm ${version}.tar.gz
---> Running in e80aa7d42f50
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Removing intermediate container e80aa7d42f50
The command '/bin/sh -c cd /var/www/ && curl --silent -o ${version}.tar.gz -L https://github.com/tchapi/davis/archive/v${version}.tar.gz && tar xvzf ${version}.tar.gz && mv -f /var/www/davis-${version} /var/www/davis && rm ${version}.tar.gz' returned a non-zero code: 2

Relevant lines in Dockerfile:

RUN cd /var/www/ && curl --silent -o ${version}.tar.gz -L https://github.com/tchapi/davis/archive/v${version}.tar.gz \
 && tar xvzf ${version}.tar.gz \
 && mv -f /var/www/davis-${version} /var/www/davis \
 && rm ${version}.tar.gz

I guess it's because ${version} can't be resolved when you're trying to build master; it should be https://github.com/tchapi/davis/archive/master.tar.gz. Maybe drop the v and set master as the version?

I'm trying if ARG version="master" works now.

Update to 1.9.0 breaks installation

Hey,

after updating to 1.9.0 the complete server does not work and returns the following server error. I attached a screenshot.
Bildschirmfoto 2022-01-14 um 09 35 46

I did not change anything and downgrading to 1.8.0 solves the problem.

Thanks for looking into it in advance.

deprecation warning on homepage

Hi,

I am getting the following deprecation warnings currently:

Deprecated: Return type of Symfony\Component\HttpFoundation\ParameterBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/davis/vendor/symfony/http-foundation/ParameterBag.php on line 210

Deprecated: Return type of Symfony\Component\HttpFoundation\ParameterBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/davis/vendor/symfony/http-foundation/ParameterBag.php on line 220

Deprecated: Return type of Symfony\Component\HttpFoundation\HeaderBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/davis/vendor/symfony/http-foundation/HeaderBag.php on line 255

Deprecated: Return type of Symfony\Component\HttpFoundation\HeaderBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/davis/vendor/symfony/http-foundation/HeaderBag.php on line 265

the image I am running currently is the newest pull of ghcr.io/tchapi/davis:edge

Features Request: sending mail over SMTP

Great Project, many thx!
It seems, this project can become a replacement for Baikal (for my part).
Unfortunately there is an issue: sending e-mails with php mail() function.

A framework like phpmailer or swiftmailer to sending e-mails over an SMTP server/account would be great.

Testing

Create tests:

  • unit tests for specific methods / classes that would benefit from it
  • functional tests for the dashboard

DAVx5: Received non-XML 207 Multi-Status

Hi,

I'm getting the error above when trying to use davis with DAVx5.
The content-type returned is text/html and DAVx5 only accepts xml.
Is there a way to fix or force the content-type returned?
I'm using nginx 1.16 with php-fpm 7.3.

Other clients, like iOS and the Thunderbird Lightning extension work fine as is btw.

Thanks.

Debug log: davx5-info.txt

php8 compatibility

Hey,

archlinux just switched to php8 on stable.

Is davis already php8 compatible? If not it would be nice to see it in the changelog of the future compatible release.

Thanks

Kind regards

Installation on shared hosting often not possible

The structure of the project creates problems on some shared hoster platforms. Let me give an example:

So for shared hosting the document root could be /var/www/vhosts/hostingXXXXX.netcup.net/cal.domain.com/davis/public. The repository is in the folder davis and only the public folder is exposed.
The hoster sets the open_basedir setting to the same path. This is not changeable. This results in errors as other php files cannot be accessed, for example those in the vendor folder.

Is there anything that can be done about this?

Adjusting the vendor-dir does not work because of

require dirname(__DIR__).'/vendor/autoload.php';

Feature Request: LDAP Integration

Seems like a pretty normal use case, to extend the authentication schema to support LDAP.

I know I can submit a pull req, but if an actual PHP developer where more comfortable integrating this feature, it would likely be better / faster than me trying to figure out how to do it.

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.