flighttactics / taktracker Goto Github PK
View Code? Open in Web Editor NEWiPhone version of the TAK Tracker Application
License: Other
iPhone version of the TAK Tracker Application
License: Other
Is your feature request related to a problem? Please describe.
Similar to issue #46 agencies deploying TAK Tracker may not want the emergency alerting to be available for an end-user.
Describe the solution you'd like
Allow a setting in the .pref
file to disable
Additional context
We would need a way of "resetting" the option if a user changes data packages, or perhaps a way to "clear" a connection that also resets the prefs
Is your feature request related to a problem? Please describe.
Currently the application only communicates with TAK Servers over CoT XML. Also allow for CoT Protobuf support
Additional context
We'll need to ensure we're negotiating for the proper protocol to communicate over and falling back to XML if Protobuf is not supported.
Is your feature request related to a problem? Please describe.
Some TAK Servers are set up using SSL certificates using Root-verified SSL. For any other servers using self-signed primary or intermediate certificates we need to validate the server's trust chain
Describe the solution you'd like
Additional context
We are already parsing the certificate in the data package, so most of this is the UI modifications for Certificate Enrollment and actually enforcing the trust verificatiion
Describe the solution you'd like
COT messages transported over the QUIC protocol
Additional context
iOS 15 on supports the QUIC format (see developer documentation)
Is your feature request related to a problem? Please describe.
Currently there is no way to set the Team/Role that is sent for the user
Describe the solution you'd like
In the settings page allow the user to choose the Team/Role.
Additional context
As part of this we should remove the CoT Type / How settings that are displayed. These should be inferred.
Is your feature request related to a problem? Please describe.
With the newer versions of TAK Server Channel Support was added. It is unclear exactly how TAK Tracker handles Channel support, but we need to ensure that when connecting to a server we are communicating in the right channels
Describe the solution you'd like
As part of the settings select which channel to connect to
Additional context
iTAK and ATAK handle Channel support differently. When connecting to a server ATAK by default has all Channels turned off while iTAK by default has all Channels turned on. It's likely we would default TAK Tracker to have all Channels on and allow toggling so that the Tracker user will always show up somewhere when connecting to a server.
Allow a user who is launching the app for the first time to receive an onboarding wizard to set up their permissions, callsign, team, and server connections.
Describe the bug
When rotating the device to landscape mode the app disappears
To Reproduce
Note this requires a iPhone Max or iPad to reproduce:
Expected behavior
When rotating Landscape the app shows the same UI as on a non-Max phone
Screenshots
If applicable, add screenshots to help explain your problem.
Smartphone (please complete the following information):
Additional context
According to this link it's a design feature of NavigationView
where rotation on a large enough screen causes the "Secondary" view to be displayed - of which we have none in this app.
Is your feature request related to a problem? Please describe.
Apple Maps don't always have all of the features, such as address labels on the map
Describe the solution you'd like
A way to add additional maps when showing the map display
Additional context
Map sources are typically XML files that have the tileserver and other pertinent information. An example one for Google Maps is:
<?xml version="1.0" encoding="UTF-8"?>
<customMapSource>
<name>0.GoogleHybrid</name>
<minZoom>0</minZoom>
<maxZoom>21</maxZoom>
<tileType>png</tileType>
<tileUpdate>None</tileUpdate>
<url>https://mt.google.com/vt/lyrs=y,hl=en&x={$x}&y={$y}&z={$z}</url>
<backgroundColor>#000000</backgroundColor>
</customMapSource>
After running the app overnight got a message that the app crashed in the latest test flight build. The crash log is attached.
The crash happened in Apple's Networking code, specifically in nw_read_request_get_maximum_datagram_count
. According to this SO post it looks like this could be caused by an overflow of UDP requests. Indeed in our UDP Code we're queuing up a receiver on send
's completion - for no real good reason since we're not doing anything with received UDP messages. Will fix in next release.
Crash Log:
Incident Identifier: C9187AC3-3187-4659-B001-E9145CCCDC04
Hardware Model: iPhone14,2
Process: TAKTracker [4391]
Path: /private/var/containers/Bundle/Application/58A0BB77-8217-4CAD-8F74-8AA2697DA14B/TAKTracker.app/TAKTracker
Identifier: com.flighttactics.TAKTracker
Version: 1.0 (27)
AppStoreTools: 15A240a
AppVariant: 1:iPhone14,2:16
Beta: YES
Code Type: ARM-64 (Native)
Role: Non UI
Parent Process: launchd [1]
Coalition: com.flighttactics.TAKTracker [1198]
Date/Time: 2023-09-15 06:01:46.2578 -0400
Launch Time: 2023-09-14 22:18:06.3469 -0400
OS Version: iPhone OS 16.6.1 (20G81)
Release Type: User
Baseband Version: 2.80.01
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Subtype: KERN_PROTECTION_FAILURE at 0x000000016b32bfe0
Exception Codes: 0x0000000000000002, 0x000000016b32bfe0
VM Region Info: 0x16b32bfe0 is in 0x16b328000-0x16b32c000; bytes after start: 16352 bytes before end: 31
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
Stack 16b214000-16b29c000 [ 544K] rw-/rwx SM=PRV thread 2
GAP OF 0x8c000 BYTES
---> STACK GUARD 16b328000-16b32c000 [ 16K] ---/rwx SM=NUL ... for thread 3
Stack 16b32c000-16b3b4000 [ 544K] rw-/rwx SM=PRV thread 3
Termination Reason: SIGNAL 10 Bus error: 10
Terminating Process: exc handler [4391]
Triggered by Thread: 3
Thread 0 name:
Thread 0:
0 libsystem_kernel.dylib 0x00000001dd97aca4 mach_msg2_trap + 8 (:-1)
1 libsystem_kernel.dylib 0x00000001dd98db74 mach_msg2_internal + 80 (mach_msg.c:201)
2 libsystem_kernel.dylib 0x00000001dd98de4c mach_msg_overwrite + 540 (mach_msg.c:0)
3 libsystem_kernel.dylib 0x00000001dd97b1e8 mach_msg + 24 (mach_msg.c:323)
4 CoreFoundation 0x000000019ea34024 __CFRunLoopServiceMachPort + 160 (CFRunLoop.c:2622)
5 CoreFoundation 0x000000019ea35250 __CFRunLoopRun + 1208 (CFRunLoop.c:3005)
6 CoreFoundation 0x000000019ea3a3ec CFRunLoopRunSpecific + 612 (CFRunLoop.c:3418)
7 GraphicsServices 0x00000001d9f5035c GSEventRunModal + 164 (GSEvent.c:2196)
8 UIKitCore 0x00000001a0dc6f58 -[UIApplication _run] + 888 (UIApplication.m:3782)
9 UIKitCore 0x00000001a0dc6bbc UIApplicationMain + 340 (UIApplication.m:5372)
10 SwiftUI 0x00000001a240bc50 closure #1 in KitRendererCommon(_:) + 176 (UIKitApp.swift:37)
11 SwiftUI 0x00000001a23721ec runApp<A>(_:) + 152 (UIKitApp.swift:14)
12 SwiftUI 0x00000001a235c294 static App.main() + 128 (App.swift:114)
13 TAKTracker 0x0000000104eb0c54 static TAKTrackerApp.$main() + 28 (TAKTrackerApp.swift:10)
14 TAKTracker 0x0000000104eb0c54 main + 40 (TAKManifestParser.swift:0)
15 dyld 0x00000001bdf6cdec start + 2220 (dyldMain.cpp:1165)
Thread 1 name:
Thread 1:
0 libsystem_kernel.dylib 0x00000001dd97aca4 mach_msg2_trap + 8 (:-1)
1 libsystem_kernel.dylib 0x00000001dd98db74 mach_msg2_internal + 80 (mach_msg.c:201)
2 libsystem_kernel.dylib 0x00000001dd98de4c mach_msg_overwrite + 540 (mach_msg.c:0)
3 libsystem_kernel.dylib 0x00000001dd97b1e8 mach_msg + 24 (mach_msg.c:323)
4 CoreFoundation 0x000000019ea34024 __CFRunLoopServiceMachPort + 160 (CFRunLoop.c:2622)
5 CoreFoundation 0x000000019ea35250 __CFRunLoopRun + 1208 (CFRunLoop.c:3005)
6 CoreFoundation 0x000000019ea3a3ec CFRunLoopRunSpecific + 612 (CFRunLoop.c:3418)
7 Foundation 0x0000000198caefb4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212 (NSRunLoop.m:373)
8 Foundation 0x0000000198caee9c -[NSRunLoop(NSRunLoop) runUntilDate:] + 64 (NSRunLoop.m:420)
9 UIKitCore 0x00000001a0ef9cc8 -[UIEventFetcher threadMain] + 416 (UIEventFetcher.m:1376)
10 Foundation 0x0000000198cc8524 __NSThread__start__ + 716 (NSThread.m:963)
11 libsystem_pthread.dylib 0x00000001fe7f66b8 _pthread_start + 148 (pthread.c:893)
12 libsystem_pthread.dylib 0x00000001fe7f5b88 thread_start + 8 (:-1)
Thread 2:
0 libsystem_pthread.dylib 0x00000001fe7f5b74 start_wqthread + 0 (:-1)
Thread 3 name:
Thread 3 Crashed:
0 Network 0x000000019f3bf1ac nw_read_request_get_maximum_datagram_count + 4 (read_request.m:373)
1 Network 0x000000019f3bf204 nw_read_request_get_maximum_datagram_count + 92 (read_request.m:379)
Thread 4:
0 libsystem_pthread.dylib 0x00000001fe7f5b74 start_wqthread + 0 (:-1)
Thread 5:
0 libsystem_pthread.dylib 0x00000001fe7f5b74 start_wqthread + 0 (:-1)
Thread 3 crashed with ARM Thread State (64-bit):
x0: 0x0000000281192120 x1: 0x01000001f53e8949 x2: 0x00000001f53e8948 x3: 0x0000000000000000
x4: 0x0000000280459880 x5: 0x0000000000000820 x6: 0x0000000280b79420 x7: 0x00000001c970b7bc
x8: 0x0000000000000001 x9: 0x000000016b3ae728 x10: 0x00000000000005c0 x11: 0x00000000000010ff
x12: 0x0000000044000000 x13: 0x0000000000000000 x14: 0x0060000000000000 x15: 0x00000000e4275815
x16: 0x01000001f53e8949 x17: 0x02000001f53e8949 x18: 0x0000000000000000 x19: 0x000000028118b840
x20: 0x000000010b026200 x21: 0x0000000000000000 x22: 0x000000010b026378 x23: 0x00000001f53ea000
x24: 0x0000000280e65868 x25: 0x0000000109d15dc0 x26: 0x0000000281153980 x27: 0x0000000000000000
x28: 0x000000010b026200 fp: 0x000000016b32c080 lr: 0x4956be019f3bf204
sp: 0x000000016b32c030 pc: 0x000000019f3bf1ac cpsr: 0x80001000
esr: 0x92000047 (Data Abort) byte write Translation fault
Binary Images:
0x104eac000 - 0x105143fff TAKTracker arm64 <4186a312bc493ec184396464d69fd952> /private/var/containers/Bundle/Application/58A0BB77-8217-4CAD-8F74-8AA2697DA14B/TAKTracker.app/TAKTracker
0x105344000 - 0x10534ffff libobjc-trampolines.dylib arm64e <7e77fc541c3331c086e81fb7bf12836c> /private/preboot/Cryptexes/OS/usr/lib/libobjc-trampolines.dylib
0x198c6d000 - 0x19954afff Foundation arm64e <1715de5d08933af0b0c0550bb14f91ec> /System/Library/Frameworks/Foundation.framework/Foundation
0x19e9bb000 - 0x19eda2fff CoreFoundation arm64e <a900b4590127379e9cba0eab9c5d559f> /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
0x19eda3000 - 0x19f9ccfff Network arm64e <f9d5a7e31efb3879b33ffd16ab5e4ad5> /System/Library/Frameworks/Network.framework/Network
0x1a0a2a000 - 0x1a224efff UIKitCore arm64e <7d57a1d1856f338d97db880c4ec8b02e> /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore
0x1a224f000 - 0x1a3bc7fff SwiftUI arm64e <14c7908e8c603bf7b6d8937d502b5918> /System/Library/Frameworks/SwiftUI.framework/SwiftUI
0x1bdf57000 - 0x1bdfdca53 dyld arm64e <c3fc2ee4367f3086beb8420ad442bf88> /usr/lib/dyld
0x1d9f4f000 - 0x1d9f57fff GraphicsServices arm64e <cd8d719514e13c7ca8c950ccea9f2a17> /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices
0x1dd97a000 - 0x1dd9b1fe7 libsystem_kernel.dylib arm64e <681b06a07f6b3fa3a2ce063dc1da7b1b> /usr/lib/system/libsystem_kernel.dylib
0x1fe7f5000 - 0x1fe800ff3 libsystem_pthread.dylib arm64e <aa302f5affe5327aa0033b288b935de1> /usr/lib/system/libsystem_pthread.dylib
EOF
Is your feature request related to a problem? Please describe.
When rolling out TAK to a large, mixed-device agency implementers don't want to have to create multiple config files for each platform
Describe the solution you'd like
Support the config.pref file from ATAK to toggle the interface elements and config options that are common between the platforms
Describe the bug
When using a device running iOS 15 data packages can not be uploaded. The button doesn't seem to do anything.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The file picker dialog should open at this point. In the onboarding page it just says "processing data package" as soon as you click the button
Screenshots
https://github.com/flighttactics/TAKTracker/assets/99811/456674e9-8a63-4242-a443-9d2db8edabd9
Smartphone (please complete the following information):
Additional context
It's a known issue for Apple with a workaround available in that link
Is your feature request related to a problem? Please describe.
When users are going through the onboarding or Settings screen flow, they may click on "Connect to a TAK server" expecting to be able to manage everything to do with connecting, including using a data package
Describe the solution you'd like
In addition to the current Settings screen that has this
Modify this screen to have an option to upload a data package
Additional context
We'll leave the current settings screen breakout as is. We'll also need to make sure that when a user is uploading a data package that the enrollment status correctly processes and updates when coming from the Connection modal screen
Describe the bug
For some users tapping on Heading or Compass to change from Magnetic North to True North produces a "-1" value instead
To Reproduce
Steps to reproduce the behavior:
Expected behavior
There's not much we can do other than alert the user that Compass Calibration is turned off
Additional context
A StackOverflow post is here about the specific issue https://stackoverflow.com/a/59583996
Describe the bug
When first turning on the map using the Settings -> Situational Awareness menu, if a user leaves the default map selected, the actual map never loads
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The user sees the map set to the default map style
Is your feature request related to a problem? Please describe.
When starting up a Tracker where the Callsign has not previously been set a random callsign is generated. But this differs from run to run since it isn't actually stored in the settings.
Describe the solution you'd like
The default callsign should be consistent from run to run on the same device even if a callsign has not been set
Apple provides a mechanism to automate features in installed applications through the use of Shortcuts. On install we should offer the ability to have some base shortcuts - specifically around sending a 911 Alert.
Is your feature request related to a problem? Please describe.
Certain clients will not leverage TAK Chat and primarily need the app to run as long as possible with as minimal hit to battery life. Since TAK Chat requires a continually open connection for listening for incoming messages, we should be able to set a pref to disable it to conserve battery life.
Describe the solution you'd like
Allow both an app setting and configuration through MDM / Data Packages to disable TAK Chat
Is your feature request related to a problem? Please describe.
The Main Screen of TAK Tracker allows for different measurement units to be selected (m/s, mph, Lat/Lon, MGRS, etc). However upon closing and reopening the app these selections reset to the default
Describe the solution you'd like
Remember the user's preferences for any screen unit measurement changes
Additional context
This will most likely be critical once MGRS support is in place
Is your feature request related to a problem? Please describe.
For certain uses of TAK Tracker MGRS coordinate display is needed
Describe the solution you'd like
When tapping to toggle coordinates allow switching to MGRS.
Describe the bug
When uploading a data package where the files are in a subfolder the app is unable to connect
To Reproduce
Steps to reproduce the behavior:
.p12
files, .prefs
file and MANIFEST/mainfest.xml
mydatapackage.zip
would contain mydatapackage/user.p12
, mydatapackage/ca.p12
, etc)Expected behavior
Expect the server to connect. What does happen is that the preferences are read for the server name, port, callsign, etc but the actual connection can not be made
Smartphone (please complete the following information):
Additional context
The issue stems from the app trying to properly locate the .p12
files from the archive. SwiftTAK walks all of the files to find the preference file, but then uses a different method to find the certificates after parsing the manifest. This method presumes that the certificates will be at the root of the zip file, so they aren't loaded or parsed, and the necessary identities can't be created.
The fix (in SwiftTAK) will be to identify where the preference file itself is at, and then use that as the "base directory" for all other Archive operations.
Is your feature request related to a problem? Please describe.
It's not always clear how strong the compass / GPS is. The Android TAK Tracker shows this information on the screen
Describe the solution you'd like
Pull the Compass / GPS information from LocationManager and display it on the main screen. When a map is not shown, display it like the Android TAK Tracker. When a map is shown, use a compact method of displaying at the bottom
Describe the bug
While connected to a TAK Server, if that server is rebooted TAK Tracker does not seem to automatically reconnect to it
To Reproduce
Steps to reproduce the behavior:
Expected behavior
TAK Tracker should automatically reconnect
Smartphone (please complete the following information):
Additional context
This is most likely an issue right here https://github.com/flighttactics/TAKTracker/blob/main/TAKTracker/Communications/TCPMessage.swift#L233-L244 where the state after a force disconnection is "Waiting" which doesn't set the retry flag.
Is your feature request related to a problem? Please describe.
While TAK Tracker sends the altitude as part of the CoT message, it is not displayed to the end user on the Main Screen
Describe the solution you'd like
Display Altitude on the main screen as it does on the Android TAK Tracker
Additional context
Altitude is not always displayed on TAK Tracker. For example, on the S10 it is not displayed as seen here. So it's likely a "display if there is room" context. Also note that like the other display elements the user can toggle between units - here Meters and Feet
Is your feature request related to a problem? Please describe.
Agencies may deploy large number of devices via MDM solutions. Part of these deployments are configuring applications running on the devices
Describe the solution you'd like
Allow TAK Tracker to be configured via MDM including the server connection and app settings
Currently if a TAK Server has multiple name entries in CoreConfig for OU clients can not use certificate enrollment:
<nameEntry name="OU" value="TAK"/>
<nameEntry name="OU" value="Users"/>
Is your feature request related to a problem? Please describe.
There are cases where TAK Tracker is being used in the background but it shouldn't be obvious by glancing at the phone that the location is being tracked. Right now when the app is not in the foreground the "Background updating" indicator is on as determined by the time in the upper left corner being highlighted in blue
Describe the solution you'd like
Allow a user to modify an advanced setting to toggle off displaying the indicator.
Additional context
For TAK Tracker we always want this to default to being on and user-modifiable only
Is your feature request related to a problem? Please describe.
When displaying the map we don't allow switching between the map types. There are cases where a Satellite View is preferable to the roads view.
Describe the solution you'd like
In Settings allow switching between the various map types. Additionally move toggling the map to the bottom of the Settings Screen along with any map controls.
Additional context
While display a map seems like a great feature, not every use of TAK Tracker needs the map to be displayed
Reported via App Store Review
Describe the bug
During onboarding when the user reaches the last step the onboarding page does not go away
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The onboarding screen to go away
Smartphone (please complete the following information):
Additional context
This was reported by Apple on the 17.1 Beta candidate. It appears to be an issue with the way SettingsStore
is accessed on the main app screen
Is your feature request related to a problem? Please describe.
Certain clients need to be able to run TAK Tracker without it looking like a tracking application.
Describe the solution you'd like
Allow a data package to define specific layout elements through the pref file to change the logos, color scheme, et
Describe the bug
When uploading a new data package for a server TAK Tracker is already connected to where that data package keeps everything the same except the username/user certificate TAK Tracker will show a successful connection but TAK Server will still show the old username connecting
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The Client Connection page should show that USER2 is now connected. However it continues to show USER1 is connected even after a device restart
Additional context
This appears to be an issue because we use the server name as part of the index for the certificate, and iOS doesn't allow a certificate to just be replaced - it must be explicitly removed first and then the new one added.
Note that this does not apply to adding a data package to a different server, nor to certificate enrollment. And the workaround would be to connect to a different TAK Server then upload the data package for the new user.
Describe the bug
When accessing the Alert page the toggle switches are washed out when the device is in Dark Mode
Additional context
These switches get their background color swapped when being toggle on. The default system color does not appear to be exposed in SwiftUI but there is a workaround that will be shipped with the next TestfFlight
Is your feature request related to a problem? Please describe.
Users of TAK Tracker may need a way to send messages to other team members. TAK Chat is the standard way of doing this.
Describe the solution you'd like
We already have the screen for TAK Chat. This will need to implement two-way comms for sending and receiving messages, as well as displaying message counts in the icon when a new message comes in. Might be a nice feature to have a Notification Center alert on new messages with a badge count update.
Is your feature request related to a problem? Please describe.
When using a device running TAK Tracker in the field in may not always be possible to activate the emergency beacon by opening the device itself.
Describe the solution you'd like
A way of activating emergency beacons via a Bluetooth device
Additional context
Originally requested here #11 (comment) but also already in flight for some other work happening in TAK Tracker.
Apple has a robust set of Machine Learning libraries. Investigate adding in a feature to detect specific sounds using Sound Analysis (e.g. gunshots) and trigger an emergency alert
Is your feature request related to a problem? Please describe.
If a user has an issue while in the field they need a way to alert other users and command of their emergency
Describe the solution you'd like
We already have the screen for emergency alerts - we need to continue the implementation of this and ensure the correct messages are being sent for emergency beacon alerts
Describe the bug
When broadcasting location information we are not including the <track>
CoT message
Expected behavior
We are sending that with the user's speed and heading information
Is your feature request related to a problem? Please describe.
When running TAK Tracker on a larger device the app does not make use of all of the available screen space
Describe the solution you'd like
In the current v1.0 release the application has a border around the main screen so it does not go all the way to the edges. This is especially noticeable in non-dark mode uses of the phone
Compare this to the iTAK application which goes all the way to the edges of the device:
Additional context
This is likely an adjustment needed of the Safe Mode area. Should be a relatively easy fix.
Describe the bug
When transitioning networks or losing connections the app is not always attempting to reconnect to the server
To Reproduce
Steps to reproduce the behavior:
Failed
as the server status, and it doesn't reconnect until you restart the appExpected behavior
Since TAK Tracker is expected to run in the background without interaction it is imperative for it to aggressively attempt reconnects and alert the user if unable to connect
Additional context
Note that this does not happen all the time - generally the app is designed to reconnect if the connection fails, though it may take one or two cycles to recognize that failure. This bug is specifically around observed cases where the connection failed and it never attempted to reconnect.
Describe the bug
When switching the device to landscape mode the UI changes, but the Heading / Compass directions do not recognize the device switch, so are off by 90 degrees
To Reproduce
Steps to reproduce the behavior:
Expected behavior
If you were facing South (180 degrees) you'll notice that now your device is oriented towards the same direction, but showing heading/compass as 90 degrees off (either 90 or 270)
Smartphone (please complete the following information):
Is your feature request related to a problem? Please describe.
When the TAK Server uses a port other than the default port for the API/CSRs (8446) certificate enrollment fails for TAK Tracker
Describe the solution you'd like
Allow the CSR port to be configurable
Additional context
We'll need to ensure this can be set during both initial device set up and if someone enrolls from the setting page. Since they use the same screen this should be fine, but important to test both scenarios.
Is your feature request related to a problem? Please describe.
In rapid deployment situations it's not always feasible to hand out usernames/password/certificates just for Tracking use. We need a rapid way to get people into the COP.
Describe the solution you'd like
Allow TAK Tracker to scan a QR code to connect to the TAK Server.
Additional context
There's lots of questions around this. TAK somewhat expects each user to be on their own certificate. However there's also the QR plugin Raytheon recently created to allow temporary access. There's also the question of how to handle certificates when using self-signed certs. But conceptually this would be great to be like SARTopo's ease of use around getting people onto a map - or at least tracking.
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.