Git Product home page Git Product logo

static-web-apps's Introduction

Azure Static Web Apps

Azure Static Web Apps is a streamlined hosting option for developers building modern frontend web apps on Azure. Azure Static Web Apps is tailored for apps with static front-end and optional dynamic back-end powered by Azure Functions serverless APIs. Azure Static Web Apps feature:

  • A single unified workflow based on GitHub actions from source code to global availability in the cloud
  • Integrated serverless APIs powered by Azure Functions to extend your app with full-stack functionality
  • Authentication and Authorization with flexible role and access definitions

To get started, follow the Static Web Apps quickstart to build and deploy your first static web app in minutes. For more info about Static Web Apps, see the Static Web Apps documentation and the guided learning paths in Microsoft Learn for creating and publishing an Angular, React, Svelte, or Vue JavaScript app and API.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

static-web-apps's People

Contributors

anthonychu avatar microsoft-github-operations[bot] avatar microsoftopensource avatar miwebst avatar thomasgauvin 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  avatar  avatar  avatar  avatar  avatar

static-web-apps's Issues

Azure Function written in C# results in deployment error

I created my backend Azure Function using C#, but this results in the following deployment error:

Error: Platform 'dotnet' version '3.1' is unsupported. Supported versions:

As all the samples i saw are using JavaScript for the backend as well i'm wondering if this is a known limitation of the service at it's current stage or if i just messed something up in my demo project (https://github.com/marxxxx/asw-demo2).

app_artifact_location is not optional

The static web apps deploy github action template contains:

  • "app_artifact_location: '' # Built app content directory - optional"

indicating it is optional, but if I delete it I get a build error, and if I leave it empty I get a build error. So it appears this is not optional.

Turns out changing it to this seems to work, perhaps you should fix the template then to do this and remove the word "optional":

  • "app_artifact_location: '.' # Built app content directory"

I'm trying to deploy something that is truly a static web app already, no need for build, and no build artifact location: https://github.com/lovettchris/TeleprompterBuild

Possibility to enforce trailing slashes

It would be nice, if one could enforce trailing slashes at least for specific urls. In my case I would like
to forward /admin to /admin/, but doing that via the routes.json file results in a redirection loop.

Logs/Monitoring for Azure Functions

Would be great to see some kind of monitoring or logs for the Azure Functions. I'm unable to see anything about what's happening on there, just that I have functions

Support Azure B2C as an Authentication Provider

For greater customisation of the auth process it would be great to support Azure B2C/customisation as a provider for authentication.
This would also enable more people to migrate over to this service.

Canceling Facebook Auth leads to error page

Steps to reproduce:

  1. auth with facebook
  2. click cancel (dont authorize fb)
  3. it bring me to this page

image

{"code":401,"message":"An error of type 'access_denied' occurred during the login process: 'Permissions error'"}

It should bring me back to my app

Is there a max on the number of users?

Hi,

What is the maximum number of allowed users?

Under the custom error pages sections at error type "Unauthorized_TooManyUsers" it states:

"The site has reached the maximum number of users, and the server is limiting further additions. This error is exposed to the client because there's no limit to the number of invitations you can generate, and some users may never accept their invitation."

https://docs.microsoft.com/en-us/azure/static-web-apps/routes#custom-error-pages

Build And Deploy: ERR! code ELIFECYCLE

Saw this yesterday at BUILD and excited to try this out!

Running into a Build and Deploy error specific to React - btw, if this repo is the right place for it, I'll delete it from there and "move" it here.

TLDR; everything works locally (dev and build), but fails on react-scripts-build- or at least that's what I think based on log output.

Aside from the posted React package versions, my local environment is on Node v14.2.0 - and looking at the logger, Oryx is on v12.16.3. Unsure if that matters, just providing as much info as I can...

How do we use for jekyll?

This question is about Azure/[email protected].

My code is here.

I defined app_artifact_location same as jekyll output directory like below.

https://github.com/kheiakiyama/trans-feed/blob/8e5088b00e01ce5b02ae3316448d04d277c91b41/.github/workflows/azure-static-web-apps-blue-meadow-0f4ae8c00.yml

But this action did not work I expected.
It looks that find out index.html from app_location before find out contents from app_artifact_location.

Below is build log.
https://github.com/kheiakiyama/trans-feed/runs/703356187?check_suite_focus=true

No API app is not expected for Static Web Apps?

Custom build scripts - Action to upload only?

I wanted to try this with my blog as a first attempt. However, the codebase requires some non-standard build steps, and this doesn't work with Oryx. In fact, I have custom build scripts and even a Makefile.

How can I write my own CI/CD definitions and just upload the pre-built assets to Azure SWA?

Azure CLI support?

It would be great if a basic version of working with Static Web Apps would be included in some form in Azure CLI.

The GitHub requirement is a bit awkward.
Ideally, we should be able to run a simple az cli command to push a folder into an Azure Static Web App.
Also, a command to "promote" a specific deployment to production.

Angular app with routing raises 404 Not Found after page is loaded

In my tests for SWA, I pushed an Angular app which is working fine, loading, then after the page is loaded (which is using Angular routing to change the URI to /home) it gives 404 Not Found Azure error page.

I understand there's a necessity to adding routes, but my understanding is these are required only for accessing the routes directly (as in typing the domain + route and hitting enter), not for the app when it internally changes the URI (with history and similar methods). Is this a bug or this is the intended behaviour?

Support branded identity.customdomain.com

As it stands, with a custom domain the token issuer and domain showing during consent prompts is still identity.azurestaticapps.net. This will concern some users. It'd be great to offer some opportunity to brand both the identity subdomain and consent pages.

I'm not quite sure what auth flow you are using, but as I understand current browser cookie handling, this may also be problematic under default Safari settings, as well as potentially Chromium-based browsers once they bring back in same-site cookie changes?

Appreciate some feedback on that, as well as any other considerations or current limitations with regards to hosting PWAs.

Azure DevOps support

Static Web Apps is something that we would be able to use in our customer projects. However, I am confused regarding the support for Azure DevOps. Currently, there seems to be a focus on GitHub but there is no mention of Azure DevOps. Is support for Azure DevOps planned in the future?

Api's proxy needs to pass thru 302

Working on this example:
https://github.com/keesschollaart81/Contact-Form-With-Azure-Static-Web-Apps/blob/master/api/ContactForm/index.js#L25-L30

I discovered two things when working with a 302 response header.

  1. It does not pass thru the header, instead (the reverse proxy?) returns the response of the redirected location
  2. When you provide a wrong location, for example a relative url, it gives a 404.

The linked demo does work locally but breaks in the cloud.

My initial problem was the 404 of 2. It took me quite some time to figure out what was going on as there is no (cloud) logging. There's also little to no documentation on this proxy / architecture / behaviour of the Static Web App Api.

Link to thread on Twitter: https://twitter.com/nthonyChu/status/1266855455642378240

My Hugo site fails to build

Tried out the support for Hugo. Set all up according to the docs but the build fails with this error:

/usr/bin/docker run --name be76db3742c4258d2045bd9d18e2a545bed1a3_c46332 --label be76db --workdir /github/workspace --rm -e INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN -e INPUT_REPO_TOKEN -e INPUT_ACTION -e INPUT_APP_LOCATION -e INPUT_API_LOCATION -e INPUT_APP_ARTIFACT_LOCATION -e INPUT_API_BUILD_COMMAND -e INPUT_APP_BUILD_COMMAND -e INPUT_ROUTES_LOCATION -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/blogtest/blogtest":"/github/workspace" be76db:3742c4258d2045bd9d18e2a545bed1a3
App Directory Location: '/' was found.
[WARNING] Api Directory Location: 'api' could not be found. Azure Functions will not be created.
The content server has unexpectedly rejected the request with: NotFound
Exiting

Support for custom headers

It would be great to support setting of custom headers on the static website.
This would be useful so that people can set security headers etc on their sites, for example some standard security headers below.
It might be good to set default security headers on static websites as best practice to achieve a good score on https://securityheaders.com/ .

          {
            "key": "X-Content-Type-Options",
            "value": "nosniff"
          },
          {
            "key": "Strict-Transport-Security",
            "value": "max-age=10886400; includeSubDomains; preload"
          },
          {
            "key": "Referrer-Policy",
            "value": "same-origin"
          },
          {
            "key": "X-DNS-Prefetch-Control",
            "value": "off"
          },
          {
            "key": "X-XSS-Protection",
            "value": "1; mode=block"
          },
          {
            "key": "Feature-Policy",
            "value": "accelerometer 'none'; camera 'self'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'self'; payment 'none'; usb 'none'"
          },

SSL certificate support

I would love to have the ability to config my domain certificate instead of azurewebsites.net one.

Detect Angular app and build with ng build --prod

Referring to the issue I had with an Angular deployment (#31) where it was built using npm run build and resulted in the app attempting to connect to local websocket, rather than published websocket and reloading page after some failed attempts, I would like to suggest SWA service recognise Angular projects and build them with ng build --prod by default to avoid getting any user of SWA service to failing to update package.json or NPM scripts to get the same behaviour.

Preventing Access to Certain Files - eg) appsettings.json

I'm experimenting Blazor Web Assembly app with Azure Static Web Apps.

When I deploy the app, it uses appsettings.json for its configuration because apparently Blazor Web Assembly can't have access to the environment variables defined at the Configuration blade.

However, the problem is that I can see the appsettings.json file by manually entering it on a browser. For example, when I type https://captain-america-123456.azurestaticapps.net/appsettings.json, it shows the contents that may contain sensitive information, which should be avoided.

It is the related issue to #47. How can we avoid certain file from being accessible from public?

Custom Sub-Domains

Want ability to use subdomains:

docs.johnliu.net

currently the custom domains settings only validates www.

this is strange since AzureFunctions or Static Site both supported subdomains.

Request for custom HTTP 404 page

I'd like to see an option to have a custom HTTP 404 page. Super simple implementation would be to publish a page to /404.html (how Hugo does it by default)

Default behavior for PR builds from forks fails

A very common scenario is people outside the repo contributing PR's. The current default Actions template fails the PR since the secrets aren't available.

At the very least, it should still build but then pass the PR without doing any deploy.

This should be fixed soon or people who try it out may quickly get frustrated and remove it since all their PR's fail.

JAMstack with Headless CMS is not supported

In the JAMstack build workflow, it is not possible to get dynamic content from an external API and generate a static site.

Specifically, if I set the repository_dispatch as the trigger for GitHub Actions, Azure/[email protected] will fail as shown in the screenshot. It's probably a JSON payload issue.

image

A typical scenario for JAMstack is to access an online Headless CMS like Contentful in the build workflow to generate static content.

Currently, Azure Static Web Apps doesn't exactly support JAMstack; GitHub Push or PR-based content updates are called SSG (Static Site Generate) rather than JAMstack.

Page fails to load (credentials required) when using Azure storage

I have a react app where I am using Azure table storage to create a user form.

// App.js
import React from 'react';
import azure from 'azure-storage';

...

const tableService = azure.createTableService(
      process.env.REACT_APP_AZURE_STORAGE_CONNECTION_STRING
);
...

This app is connected to Azure Static Web Apps through GitHub actions. The app works normally on local (pre and post-react build). The CI/CD is passing as well and the app is deployed on Azure successfully.

However, when I navigate to the app URL, the page fails to load with the following error.

react-dom.production.min.js:209 Error: Credentials must be provided when creating a service client.
    at Function.T.createFromEnvironment (storageservicesettings.js:182)
    at Function.H.getStorageSettings (storageserviceclient.js:925)
    at new T (tableservice.js:77)
    at Object.t.createTableService (azure-storage.js:62)
    at index.js:27
    at is (react-dom.production.min.js:211)
    at bc (react-dom.production.min.js:257)
    at t.unstable_runWithPriority (scheduler.production.min.js:19)
    at Hi (react-dom.production.min.js:122)
    at mc (react-dom.production.min.js:257)

I believe it's failing because Azure cannot establish a connection to storage account due to absence of connection string. What's the correct way of passing env variables in such situations through GH actions?

Support a custom user store for identity

Congrats on the beta release.

At the moment it looks like you have built-in support for some popular third-party auth providers, where users already have an account with the third party. What is the story if I want my users to be able to sign up for an account on my site directly? That is, how would I go about offering people a way to sign up for an account for my own domain rather than using an existing Facebook, Google, Twitter, GitHub, Azure AD, etc. account?

Thanks!

Error hosting MSIX packages with the AppInstaller technology

I'm currently using the Static Website feature of Azure Storage to host and distribute my desktop applications packaged as MSIX. They are distributed using the AppInstaller technology. This means that, on my website, I have to deploy:

  • A static web page
  • An .appinstaller file, which is a XML file that describes where the MSIX package is available and defines the auto-update logic
  • A MSIX file, which is the package that contains the desktop application

Here is an example of a website which I'm using to host such a package: https://contosoexpensesgithub.z28.web.core.windows.net/

After seeing the announcement at Build of Static Web Apps, I decided to give it a try and to setup a GitHub Action to build, package and deploy my desktop apps on a Static Web App.
The workflow works fine, but the installation operation always fails. When I click on the Get the app button (which invokes the .appinstaller file using the ms-appinstaller protocol included in Windows 10), I get the following error:

image

My suspect is that this is happening because Static Web Apps doesn't support the required MIME types. The official documentation on MSIX deployment on Azure Web App, in fact, says that you must add the following MIME types:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <!--This is to allow the web server to serve resources with the appropriate file extension-->
    <staticContent>
      <mimeMap fileExtension=".appx" mimeType="application/appx" />
      <mimeMap fileExtension=".msix" mimeType="application/msix" />
      <mimeMap fileExtension=".appxbundle" mimeType="application/appxbundle" />
      <mimeMap fileExtension=".msixbundle" mimeType="application/msixbundle" />
      <mimeMap fileExtension=".appinstaller" mimeType="application/appinstaller" />
    </staticContent>
  </system.webServer>
</configuration>

I tried to include a web.config in the root of the project, but nothing has changed.

I took the same exact GitHub action and I changed the deployment to Azure Storage and everything works, so I tend to exclude a problem in the CI/CD workflow or in the AppInstaller file.

Steps to reproduce the problem

  1. Open the website https://gentle-sea-007a8f903.azurestaticapps.net/, which is hosted on Azure Static Web App
  2. Click on Install for x86
  3. Observe how the installation fails with the error: The .appinstaller file is invalid
  4. Open the website https://contosoexpensesgithub.z28.web.core.windows.net/, which is hosted on Azure Storage
  5. Click on Install for x86
  6. Observe how, in this case, the installation completes fine.

Any idea what might happen here?

Update: I'm adding a link to a Twitter thread where Rafel Rivera shares some interesting insights about his troubleshooting https://twitter.com/qmatteoq/status/1264283848004841472?s=19

Azure Function Not accepting Content Type header

When setting the content type on the Azure function response it's not passing that through

Code

https://github.com/amykapernick/quokkas/tree/broken-azure-function

// api/whatsapp/index.js
  context.done(null, {
        status: 200,
        body: message.toString(),
        headers: {
            'Content-Type': 'text/xml'
        },
    })

But on the response, it doesn't have the content type coming through

Function Endpoint

https://brave-ground-020b74800.azurestaticapps.net/api/whatsapp
Custom Domain - https://quokkas.amyskapers.dev/api/whatsapp

When deploying that exact same code to regular Azure Functions it works fine
https://quokkatest.azurewebsites.net/api/whatsapp

Have confirmed with @aaronpowell that this is broken and not working as intended

Mono repo support

My scenario: I’m deploying two apps: Sanity studio, a cms admin UI, as well as the frontend (next.js) accessing the headless CMS apis of Sanity.

I cannot create two sites in Azure Linked to the same repo, due to some restrictions (the error message does not indicate how I can fix it, or if possible at all).

John Papa mentioned there is a workaround using different branches, but it would be better if both apps were following the master branch, so I don’t have to adjust my git flow for the sake of this working.

Thanks!

GitHub Orgs not populating properly

When trying to use the App Service Static Web Apps through the Azure portal. It seems that after signing into GitHub the organizations that populate are not complete. I asked at Build what organizations should populate and was told that Admin access was required on the repository in order for it to create the Static Web App. This makes sense to me and I agree, but not all the repositories that I am admin or owner on are available.

When I sign in using this account, the only visible org to select in the drop down is FirstCraftyBrother as in my personal repositories. I expect to be able to see the 4CraftyBrothers org as well as I am the owner and admin to that org which has public repositories in it that I am also the owner of.

Using Configurations / Environment Variables without Functions

Currently, when I deploy an app without API using Functions, I can't add environment variables to the Configuration blade. But while I've been playing around this feature, I found a couple of things for you to confirm.

  1. I can add the environment variables, if I deploy an empty Functions (no endpoint, but runtime).
  2. By adding environment variables to the Configuration blade, I expected that I would be able to access to those environment variables from the front-end side by process.env["xyz"]. However, apparently they are only accessible from the Function side.

With regards to the no. 2 question, many use cases use the AJAX calls directly from the app, not through the facade, I mean Functions. In this case, direct access to the environment variables through the process.env object makes more sense to me.

For me, I'm using Blazor Web Assembly that wants to access to the environment variables. But there's no way to get to the value, other than deploying appsettings.json together.

platformErrorOverrides "Unauthenticated" error type not redirecting to provided route

I may have misunderstood something, but it appears that the "Unauthenticated" error type doesn't work as documented here.

The explanation below the example route file says that unauthenticated users will redirect to the /login route. When I set up an app like that and navigate to the /profile route, instead of redirecting to the /login route it shows the Microsoft Azure default 404 page.

If I navigate directly to the /login route I am able to log in successfully, and if I try /profile again I can access the page successfully.

You can see the example repository I'm using here.

Thank you.

My GatsbyJS website fails to build

My GatsbyJS website builds perfectly on Azure Pipelines, GitHub Actions, Netlify, and yet it fails to build as an Azure Static Web App.

After creating the website, I can see that the first run failed as I had a requirement for yarn ">=1.22" in the engines node inside the package.json file: https://github.com/PedroLamas/pedrolamas.com/actions/runs/111930224

I've now lowered that to 1.17, yet it still fails to build, this time due to some error while processing the images: https://github.com/PedroLamas/pedrolamas.com/actions/runs/111933866

The branch in use is here: https://github.com/PedroLamas/pedrolamas.com/tree/azure-test

[Bug] - Function App Is Modifying "Authorization" Header In Production Environment

I spent a while tracking down and trying to figure out what was going on and why my site wasn't working in production, and it turns out that it looks like the Static Web App service is modifying my request headers.

The authorization header that I am attaching to my request is not the same header that is being received by my function apps. I don't really want to post the tokens here but for some reason my functions are getting a completely different bearer token which is not the one I'm attaching to my requests and sending up.

Github Actions step fails to detect packages from private NPM registry

Hello.

I'm giving SWA some advanced scenario where I've published a private package on Github Packages Registry in a repo I own, then I created an app repo that uses this package in it. Locally this is working very well with a .npmrc file that has a PAT issued with the correct scopes. However, SWA Actions step fails to detect the package is from another registry. I'm not sure why because .npmrc should be enough to handle this, unless at time of files process by SWA Actions something is happening and it's causing .npmrc file not to be taken into consideration.

Error message in Actions log:

npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@ORG%2fPACKAGE - Not found
npm ERR! 404 
npm ERR! 404  '@ORG/[email protected]' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 It was specified as a dependency of '__oryx_prod_node_modules'
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! A complete log of this run can be found in:
npm ERR!     /github/home/.npm/_logs/2020-06-02T16_20_35_102Z-debug.log

GitHub Action 'Build and Deploy' fails for staging

The build and deploy action fails with below error while deploying changes to staging environment in azure static web apps.
Error message:
The content server has rejected the request with: BadRequest
Reason: No matching static site was found or the api key was invalid.

Next.js public export

Hi, I attempted to deploy a next.js app. Getting this error:

The app build failed to produce artifact folder: '/web/out'. Please ensure this property is configured correctly in your workflow file."

The /web/out folder is the default folder for next export. What does the error mean? It's not clear to me. I assume app_artifact_location should be the output of the next export - is this correct?

My next.js app is in the /web folder.

  - name: Build And Deploy
      id: builddeploy
      uses: Azure/[email protected]
      with:
        azure_static_web_apps_api_token: ${{ secrets.MYTOKEN }}
        repo_token: ${{ secrets.GITHUB_TOKEN }} 
        action: 'upload'
        app_location: '/web' 
        api_location: 'api' 
        app_artifact_location: '/web/out' 

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.