angel-dart / angel Goto Github PK
View Code? Open in Web Editor NEW[ARCHIVED] A polished, production-ready backend framework in Dart for the VM, AOT, and Flutter.
Home Page: https://angel-dart.dev/
License: MIT License
[ARCHIVED] A polished, production-ready backend framework in Dart for the VM, AOT, and Flutter.
Home Page: https://angel-dart.dev/
License: MIT License
please
Hi,
Firstly I would like to thank you for your hard work. I'm very pleased someone finally started creating full-stack framework for dart. Because it's a beta version I thought it's a good time have a look at it.
Base on the installation guide I run angel start
and all work fine. Then I open http://localhost:3000
the app in the browser and then I'm getting the bellow error in the console:
SocketException: OS Error: Connection refused, errno = 61, address = localhost, port = 57584
#0 ProxyLayer.serveFile.<serveFile_async_body> (package:angel_proxy/src/proxy_layer.dart)
#1 _asyncErrorWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:34)
#2 _rootRunBinary (dart:async/zone.dart:1170)
#3 _CustomZone.runBinary (dart:async/zone.dart:1049)
#4 _FutureListener.handleError (dart:async/future_impl.dart:146)
#5 _Future._propagateToListeners.handleError (dart:async/future_impl.dart:649)
#6 _Future._propagateToListeners (dart:async/future_impl.dart:671)
#7 _Future._completeError (dart:async/future_impl.dart:485)
#8 _Future._asyncCompleteError.<anonymous closure> (dart:async/future_impl.dart:537)
#9 _rootRun (dart:async/zone.dart:1150)
#10 _CustomZone.run (dart:async/zone.dart:1026)
#11 _CustomZone.runGuarded (dart:async/zone.dart:924)
#12 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
#13 _microtaskLoop (dart:async/schedule_microtask.dart:41)
#14 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#15 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:96)
#16 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:149)
SEVERE: 2017-02-06 15:21:26.330914: /images/favicon.png: Unhandled exception occurred -
SEVERE: 2017-02-06 15:21:26.331358:
#0 ProxyLayer.serveFile.<serveFile_async_body> (package:angel_proxy/src/proxy_layer.dart)
#1 _asyncErrorWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:34)
#2 _rootRunBinary (dart:async/zone.dart:1170)
#3 _CustomZone.runBinary (dart:async/zone.dart:1049)
#4 _FutureListener.handleError (dart:async/future_impl.dart:146)
#5 _Future._propagateToListeners.handleError (dart:async/future_impl.dart:649)```
#6 _Future._propagateToListeners (dart:async/future_impl.dart:671)
#7 _Future._completeError (dart:async/future_impl.dart:485)
#8 _Future._asyncCompleteError.<anonymous closure> (dart:async/future_impl.dart:537)
#9 _rootRun (dart:async/zone.dart:1150)
#10 _CustomZone.run (dart:async/zone.dart:1026)
#11 _CustomZone.runGuarded (dart:async/zone.dart:924)
#12 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
#13 _microtaskLoop (dart:async/schedule_microtask.dart:41)
#14 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#15 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:96)
#16 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:149)```
And add to sidebar
I failed to do a pull request on the Angel Static Plugin.
So I'll put my suggestion here.
In the file virtual_directory.dart
line 290 about.
lookupMimeType(file.path)
sometimes returns a mime of null
, this in turn, causes non-critical error logs when writting the header in dart:io
-> http_headers.dart
I added a default value of 'text/plain'.
String type = lookupMimeType(file.path) ?? 'text/plain';
_ensureContentTypeAllowed(type, req);
res.headers[HttpHeaders.CONTENT_TYPE] = type;
if (streamToIO == true) {
res
..io.headers.set(HttpHeaders.CONTENT_TYPE, type)
..io.headers.set(HttpHeaders.CONTENT_ENCODING, 'gzip')
..end()
..willCloseItself = true;
await file.openRead().transform(GZIP.encoder).pipe(res.io);
} else {
await res.sendFile(file);
}
angel init
Creating new Angel project in /home/hdcos/projects/coucbasyu/....
[1] Yes
[2] No
Directory '/home/hdcos/projects/coucbasyu/.' exists. Overwrite it? (Yes/No)yes
FileSystemException: Deletion failed, path = '.' (OS Error: Invalid argument, errno = 22)
Hello,
I'm writing a plug-in for Angel, and I have some production-only behavior that I would like to test before shipping it. Is there any way (outside of running the test twice) to test both with isProduction
false
and with it true
?
Thanks,
-tlf
P.S. Sorry if I'm missing something obvious, I'm fairly new to Dart.
Just use a dynamic URL...
Would make it much easier to change databases!!!
No need to use the old version
analyzer:
strong-mode: true
Based on the changelog, up to 1.1.0
: https://pub.dartlang.org/packages/angel_framework/versions/1.1.1#-changelog-tab-
Main points:
angel_diagnostics
is deprecated - instead just pass a Logger
and set it as app.logger
.AngelFatalError
, and subsequently fatalErrorStream
.
500
. Set app.logger
to see output.angel_errors
is no longer useful.@deprecated
members.@Parameter()
Aside from these points, there are several things to note.
Migration in itself will be pretty easy to achieve. Plugins and services haven't really changed, it's just the HTTP server itself.
There should be a basic guide to deploying an Angel instance underneath a nginx
server on Ubuntu. This is pretty simple, and doesn't require much in the way of DevOps.
web
/home/web
, where we'll host the application.web
ANGEL_ENV=production
in web
accountufw
for 80
, 443
, ssh
systemd
(comes with Ubuntu) to start server on system boot, and restart if it crashesproxy_pass
root
nginx
instead of AngelCachingVirtualDirectory
is extremely simple to use, it would be served via proxynginx
to serve your static files directly.When creating a VR Dir with
await app.configure(new VirtualDirectory(source: new Directory('node_modules/swagger-ui-dist/'), publicPath: 'swagger',));
If you go to http://localhost:3000/swagger/
this will work because there is a root /
but http://localhost:3000/swagger
without the /
won't work.
Also when you do a trace in the code, you will notice that if you make a request for a file named the same as the publicPath, that file will be replaced in the file virtual_directory.dart
line 179
@ path = path.replaceAll(new RegExp('^' + _pathify(_prefix)), '');
if path = 'swagger-ui.css'
it will result to -ui.css
This only happens when the request does not have '/'
First ran angel init demonic_chat
then angel start
and got this error:
Starting server...
Unhandled error occurred: SocketException: OS Error: Connection refused, errno = 61, address = localhost, port = 58886
#0 _ConnectionManager._connect.<_connect_async_body> (package:mongo_dart/src/network/connection_manager.dart:24:5)
#1 _asyncErrorWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:34)
#2 _rootRunBinary (dart:async/zone.dart:1170)
#3 _CustomZone.runBinary (dart:async/zone.dart:1049)
#4 _FutureListener.handleError (dart:async/future_impl.dart:146)
#5 _Future._propagateToListeners.handleError (dart:async/future_impl.dart:649)
#6 _Future._propagateToListeners (dart:async/future_impl.dart:671)
#7 _Future._completeError (dart:async/future_impl.dart:485)
#8 _Future._asyncCompleteError.<anonymous closure> (dart:async/future_impl.dart:537)
#9 _rootRun (dart:async/zone.dart:1150)
#10 _CustomZone.run (dart:async/zone.dart:1026)
#11 _CustomZone.runGuarded (dart:async/zone.dart:924)
#12 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
#13 _microtaskLoop (dart:async/schedule_microtask.dart:41)
#14 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#15 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:96)
#16 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:149)
then tried dart bin/server.dart
and got the same error. After this I tried to replicate this by running angel init angel_test
and then angel start
and got this error(dart bin/server.dart
also throws this error):
Starting server...
Unhandled exception:
Could not import "package:intl/intl.dart" from "file:///Users/torchhound/angel_test/bin/common.dart": Could not resolve a package location for base at file:///Users/torchhound/angel_test/bin/server.dart
null
now, i develop some server on mysql or oracle, not NOSQL, i need angel provide mysql or oracle support
Missing chain, routable class, AngelMiddleware class
Don't need load balancer, just use startShared
Hi -
I think this might have something to do with the latest Dartium update and the Issue #44 fix (that may need to be re-opened.)
Fresh clone, trying to access 'localhost:3000' I get:
Refused to execute script from 'http://localhost:3000/packages/browser/dart.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
Maybe I can disable strict MIME-type checking in the browser, but that's not a real fix.
Thoughts appreciated,
thanx,
rickb
https://github.com/angel-dart/angel/wiki/Proper-Service-Implementation
Important things to consider:
Map
s. Object serialization should be handled by angel_serialize
, another serializer, or TypedService
.allowQuery
)DELETE /null
should trigger an evaluation of allowRemoveAll
Service.toId
will return null
in these casesremove
, return the old itemmodify
and update
are not interchangeable!
modify
merges changes into an existing itemupdate
overwrites an existing itemHi
I just tried Dart for the first time.
I have 2 major issues which are stopping me from even starting out;
When i try pub global activate angel_cli
, the process gets stuck at Installed executable angel.
.
I am assuming that Angel was indeed instaled but i am not sure if any further steps were not performed.
angel init
goes into a loop and as such i am not even able to create a boilerplate project.
PS C:\Users\Mockingbird\DevSpace\Dart\angelu> angel init
Creating new Angel project in C:\Users\Mockingbird\DevSpace\Dart\angelu\....
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)y
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)y
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)y
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)y
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)y
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)y
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)
[1] Yes
[2] No
Directory 'C:\Users\Mockingbird\DevSpace\Dart\angelu\.' already exists. Overwrite it? (Yes/No)
[1] Yes
[2] No
I am on windows 10, 64 bits and have installed Angel CLI version 1.1.4.
Dart is Dart VM version: 1.24.2 (Thu Jun 22 08:55:56 2017) on "windows_x64"
On an angel init project 1 (full project), if you target nonexisting resource e.g http://localhost:3000/notFound, you will get an endless pending resource.
in lib/src/routes/routes.dart if you use comment out the exception handling and use
app.after.add((ResponseContext res) => 'Not Found');
This will work but the current way it is setup with the default template does not work event though the error is caught.
online 28 in the file plugin.dart whether I variable result with a bool value of false or a Map back the request does not end.
Maybe I am doing this wrong, I want to be redirected to the swagger-ui directory with the following code.
await app.configure(new VirtualDirectory(source: new Directory('node_modules/swagger-ui-dist/'), publicPath: 'swagger/'));
However, I see that on line 89 in file virtual_directory.dart
the variable _prefix
is assigned the value of the publicPath
variable with the slash removed.
_prefix = publicPath.replaceAll(_straySlashes, '');
_prefix
is then used to replace the path with an empty string on line 179.
path = path.replaceAll(new RegExp('^' + _pathify(_prefix)), '');
path
is later used to resolve to the source
directory on line 184
Problem comes when, If I have path e.g. /swagger/index.html
The following will happen.
189: path = '/swagger/index.html'.replaceAll(new RegExp('^' + _pathify('swagger')), '');
//path = '/index.html'
184 var absolute = source.absolute.uri.resolve(path).toFilePath();
//absolute = '/index.html'
The forward slash in the path resolves it to the /root directory.
Adding
path = path.replaceAll(_straySlashes, '');
solve this for me as a temp solution
final errors = new ErrorHandler({
404: (req, res) async => render404Page(),
403: (req, res) async => renderForbidden(),
500: (req, res) async => renderGenericErrorPage()
});
Should be
final errors = new ErrorHandler(handlers: {
404: (req, res) async => render404Page(),
403: (req, res) async => renderForbidden(),
500: (req, res) async => renderGenericErrorPage()
});
this
args in constructorfinal List<String> roles = []
and add to this instead of overrideI have this error:
max@iMac-di-Massimiliano > ~/Progetti > angel init hello
Creating new Angel project in /Users/max/Progetti/hello...
Choose a project type before continuing:
[1] Basic (Minimal starting point - A simple server with only a few additional packages.)
[2] ORM (A starting point for applications that use Angel's ORM.)
Choice: 2
Cloning "ORM" boilerplate from "https://github.com/angel-dart/boilerplate_orm.git"...
Cloning into '/Users/max/Progetti/hello'...
Generated new development JWT secret: igcogQTEBuJQd4SPOJtHCHQkJNMJsJoE
Generated new production JWT secret: 56317767360521002u6505516E7g083l
Renaming project from "angel" to "hello"...
Renaming library file `/Users/max/Progetti/hello/lib/angel.dart`...
Updated file `/Users/max/Progetti/hello/bin/server.dart`.
Updated file `/Users/max/Progetti/hello/lib/hello.dart`.
Updated file `/Users/max/Progetti/hello/lib/src/models/user.dart`.
Updated file `/Users/max/Progetti/hello/lib/src/models/user.g.dart`.
Updated file `/Users/max/Progetti/hello/test/all_test.dart`.
Updated file `/Users/max/Progetti/hello/tool/migrate.dart`.
Now running pub get...
Running pub at "/usr/local/Cellar/dart/1.24.3/libexec/bin/pub"...
Resolving dependencies...
+ analyzer 0.30.0+4 (0.31.0-alpha.2 available)
+ angel_auth 1.1.0+2
+ angel_client 1.2.0+1
+ angel_common 1.0.0
+ angel_compress 1.0.0+2
+ angel_configuration 1.1.0
+ angel_cors 1.0.0+2
+ angel_diagnostics 1.0.2
+ angel_errors 1.0.0 (1.1.0 available)
+ angel_file_security 1.1.0
+ angel_framework 1.1.0+3
+ angel_hot 1.1.0
+ angel_http_exception 1.0.0
+ angel_migration 1.0.0-alpha+3
+ angel_migration_runner 1.0.0-alpha+6
+ angel_model 1.0.0
+ angel_mongo 1.1.6
+ angel_mustache 1.1.0
+ angel_orm 1.0.0-alpha+12
+ angel_orm_generator 1.0.0-alpha+6
+ angel_proxy 1.1.0
+ angel_relations 1.0.1
+ angel_route 2.0.5
+ angel_serialize 1.0.0
+ angel_serialize_generator 1.0.0
+ angel_static 1.3.0
+ angel_test 1.1.0
+ angel_validate 1.0.3
+ angel_websocket 1.1.1
+ args 0.13.7 (1.2.0 available)
+ async 1.13.3 (2.0.3 available)
+ barback 0.15.2+14
+ body_parser 1.0.3
+ boolean_selector 1.0.2
+ bson 0.3.0
+ build 0.9.3 (0.12.0 available)
+ build_barback 0.3.0 (0.5.0+2 available)
+ build_runner 0.3.4+1 (0.7.8 available)
+ charcode 1.1.1
+ cli_util 0.1.2+1
+ code_builder 1.0.4 (3.0.0 available)
+ code_transformers 0.5.1+3
+ collection 1.14.5
+ combinator 1.0.0-beta+7
+ console 2.2.4
+ container 0.1.2
+ convert 2.0.1
+ crypto 2.0.2+1
+ csslib 0.14.1
+ dart_style 1.0.9
+ dotenv 0.1.3+3
+ file 2.3.5
+ fixnum 0.10.6
+ fnx_profiler 0.9.1
+ front_end 0.1.0-alpha.4.1 (0.1.0-alpha.7 available)
+ func 1.0.0
+ glob 1.1.5
+ html 0.13.2+2
+ html_builder 1.0.2
+ http 0.11.3+16
+ http_multi_server 2.0.4
+ http_parser 3.1.1
+ http_server 0.9.6
+ id 1.0.16
+ inflection 0.4.1
+ intl 0.15.2
+ io 0.3.1
+ isolate 1.1.0
+ js 0.6.1
+ json_god 2.0.0-beta+1
+ kernel 0.3.0-alpha.1.1 (0.3.0-alpha.4 available)
+ logging 0.11.3+1
+ matcher 0.12.1+4
+ merge_map 1.0.0
+ meta 1.1.2
+ mime 0.9.5
+ mock_request 1.0.2
+ mongo_dart 0.3.1
+ mongo_dart_query 0.3.0
+ more 1.8.1
+ multi_server_socket 1.0.1
+ mustache4dart 1.1.0 (2.1.0 available)
+ node_preamble 1.4.0
+ package_config 1.0.3
+ package_resolver 1.0.2
+ path 1.5.1
+ plugin 0.2.0+2
+ pool 1.3.4
+ postgres 0.9.6
+ pub_semver 1.3.2
+ quiver 0.22.0 (0.28.0 available)
+ quiver_hashcode 1.0.0
+ random_string 0.0.1
+ recase 1.0.0+1
+ shelf 0.6.8 (0.7.2 available)
+ shelf_packages_handler 1.0.3
+ shelf_static 0.2.7
+ shelf_web_socket 0.2.2
+ source_gen 0.7.0 (0.7.4+1 available)
+ source_map_stack_trace 1.1.4
+ source_maps 0.10.4
+ source_span 1.4.0
+ stack_trace 1.9.1
+ stream_channel 1.6.3
+ stream_transform 0.0.9
+ string_scanner 1.0.2
+ term_glyph 1.0.0
+ test 0.12.30+1
+ tuple 1.0.1
+ typed_data 1.1.5
+ utf 0.9.0+3
+ uuid 0.5.3
+ vector_math 1.4.7 (2.0.5 available)
+ vm_service_lib 0.3.5 (0.3.5+1 available)
+ watcher 0.9.7+6
+ web_socket_channel 1.0.6
+ yaml 2.1.13
Downloading angel_common 1.0.0...
Downloading angel_compress 1.0.0+2...
Downloading angel_relations 1.0.1...
Downloading angel_serialize 1.0.0...
Downloading angel_hot 1.1.0...
Downloading angel_migration 1.0.0-alpha+3...
Downloading html_builder 1.0.2...
Downloading angel_errors 1.0.0...
Downloading angel_file_security 1.1.0...
Downloading angel_serialize_generator 1.0.0...
Downloading angel_cors 1.0.0+2...
Downloading angel_mustache 1.1.0...
Downloading angel_migration_runner 1.0.0-alpha+6...
Downloading angel_orm_generator 1.0.0-alpha+6...
Downloading build_runner 0.3.4+1...
Downloading postgres 0.9.6...
Downloading stream_transform 0.0.9...
Downloading angel_diagnostics 1.0.2...
Downloading fnx_profiler 0.9.1...
Downloading angel_test 1.1.0...
Downloading mock_request 1.0.2...
Downloading angel_validate 1.0.3...
Downloading angel_orm 1.0.0-alpha+12...
Downloading angel_mongo 1.1.6...
Downloading json_god 2.0.0-beta+1...
Downloading file 2.3.5...
Downloading pool 1.3.4...
Downloading build_barback 0.3.0...
Downloading angel_configuration 1.1.0...
Downloading merge_map 1.0.0...
Downloading dotenv 0.1.3+3...
Downloading angel_proxy 1.1.0...
Downloading uuid 0.5.3...
Downloading shelf_static 0.2.7...
Downloading angel_static 1.3.0...
Downloading vm_service_lib 0.3.5...
Downloading angel_auth 1.1.0+2...
Downloading angel_websocket 1.1.1...
Downloading stream_channel 1.6.3...
Downloading mustache4dart 1.1.0...
Downloading angel_client 1.2.0+1...
Downloading angel_http_exception 1.0.0...
Downloading build 0.9.3...
Downloading mime 0.9.5...
Downloading quiver 0.22.0...
Downloading code_transformers 0.5.1+3...
Downloading shelf 0.6.8...
Downloading mongo_dart 0.3.1...
Downloading mongo_dart_query 0.3.0...
Downloading bson 0.3.0...
Downloading fixnum 0.10.6...
Downloading more 1.8.1...
Downloading source_gen 0.7.0...
Downloading barback 0.15.2+14...
Downloading test 0.12.30+1...
Downloading multi_server_socket 1.0.1...
Downloading io 0.3.1...
Downloading angel_framework 1.1.0+3...
Downloading angel_model 1.0.0...
Downloading container 0.1.2...
Downloading tuple 1.0.1...
Downloading quiver_hashcode 1.0.0...
Downloading body_parser 1.0.3...
Downloading angel_route 2.0.5...
Downloading combinator 1.0.0-beta+7...
Downloading http_server 0.9.6...
Changed 117 dependencies!
Precompiling dependencies...
Loading source assets...
Precompiled dart_style and intl.
Precompiling executables...
Precompiled test:test.
Pub process exited with code 0
โ Successfully initialized Angel project.
Congratulations! You are ready to start developing with Angel!
To start the server (with file watching), run `dart bin/dev.dart` in your terminal.
Find more documentation about Angel:
* https://angel-dart.github.io
* https://github.com/angel-dart/angel/wiki
* https://www.youtube.com/playlist?list=PLl3P3tmiT-frEV50VdH_cIrA2YqIyHkkY
* https://medium.com/the-angel-framework
* https://dart.academy/tag/angel
Happy coding!
max@iMac-di-Massimiliano > ~/Progetti/hello > dart bin/server.dart
Unhandled exception:
Could not import "package:angel_framework/src/http/fatal_error.dart" from "package:angel_errors/src/plugin.dart": FileSystemException: Cannot open file, path = '/Users/max/.pub-cache/hosted/pub.dartlang.org/angel_framework-1.1.0+3/lib/src/http/fatal_error.dart' (OS Error: No such file or directory, errno = 2)
null
As see in the wiki, also if the shell says me to use dart bin/dev.dart
in my terminal (but it doesn't exist.
I'm on Mac OS 10.13.3
Dart VM version: 1.24.3 (Wed Dec 13 23:26:59 2017) on "macos_x64"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.