Giter VIP home page Giter VIP logo

bloben-app's People

Contributors

nibdo 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

bloben-app's Issues

single day event are displayed as a multi day event

If I have an event lasting from 22:00 to 00:30,in bloben it is displayed as an event in the "day section" on 2 days.
Other calendar don't do this if I haven't checked the event to be a "All day event".

Example:

Correct display:
image

Incorrect display:
image

This also occurs for 22:00 -> 00:00 events.

Todo and Notes app

Initially I thought about doing separate apps for todos and notes. Tasks app is now in state "proof of concept".

However I have been thinking about removing those apps from road map as there are many actively developed alternatives and it seems little bit redundant.

Todos will be then integrated directly to calendar app (like in other calendar apps).


This is of course still open to discussion, if you are interested to use bloben with separate todo and notes apps (with your standard DAV server) or if you are here just for calendar.

Error when deleting a single event in recurring series

With the latest version, I can't delete a single event in a recurring event series anymore. I get this error message:

{"level":"error","message":"Unknown error: {\"stack\":\"PayloadTooLargeError: request entity too large\\n    at readStream (/usr/app/api/node_modules/raw-body/index.js:156:17)\\n    at getRawBody (/usr/app/api/node_modules/raw-body/index.js:109:12)\\n    at read (/usr/app/api/node_modules/body-parser/lib/read.js:79:3)\\n    at jsonParser (/usr/app/api/node_modules/body-parser/lib/types/json.js:135:5)\\n    at Layer.handle [as handle_request] (/usr/app/api/node_modules/express/lib/router/layer.js:95:5)\\n    at trim_prefix (/usr/app/api/node_modules/express/lib/router/index.js:328:13)\\n    at /usr/app/api/node_modules/express/lib/router/index.js:286:9\\n    at Function.process_params (/usr/app/api/node_modules/express/lib/router/index.js:346:12)\\n    at next (/usr/app/api/node_modules/express/lib/router/index.js:280:10)\\n    at urlencodedParser (/usr/app/api/node_modules/body-parser/lib/types/urlencoded.js:100:7)\",\"message\":\"request entity too large\",\"name\":\"PayloadTooLargeError\",\"expected\":36201,\"length\":36201,\"limit\":20480,\"type\":\"entity.too.large\"}","method":"DELETE","path":"/api/v1/caldav-events/repeated","tags":["UNKNOWN","REST"],"timestamp":"2022-08-29 10:57:27"}

Cannot connect to calDAV server

It may be something stupid, but I can't make bloben to work with baikal. Both installed on the same physical machine

Lighttpd config:

url.redirect += (
        "^/.well-known/carddav(.*)" => "/dav.php$1",
        "^/.well-known/caldav(.*)" => "/dav.php$1"
    )
    url.redirect-code = 308

After creating user in bloben admin and check is enabled, I'm able to login into calendar.
Then after click on gear icon -> settings -> add account -> caldav - entering my baikal server https address and /dav.php which can be found in baikal user settings, username and passwords are correct.

But then I get:

[11/May/2022:14:55:44 +0300] "PROPFIND /.well-known/caldav HTTP/1.1" 308 0 "-" "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"
[11/May/2022:14:55:44 +0300] "PROPFIND /dav.php HTTP/1.1" 401 284 "-" "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"

and in bloben logs:

2022-05-11 11:55:01	error	Unknown error: Error: getaddrinfo EAI_AGAIN bloben.com	UNKNOWNREST
2022-05-11 11:55:01	error	Unknown error: TypeError: Cannot read properties of null (reading 'identity')	UNKNOWNREST
2022-05-11 11:55:45	error	Cannot connect to calDav server: Error: Invalid credentials	RESTCALDAV
2022-05-11 11:56:04	error	Unknown error: Error: getaddrinfo EAI_AGAIN bloben.com	UNKNOWNREST

It looks like there is connection to baikal, but if failed with 401 and Cannot connect to calDav server: Error: Invalid credentials RESTCALDAV. I'm sure username and passwords are correct and also tried with very simple ones like test/test and still can't add account.

Are there any logs or other debug information which I can check from bloben side?

I have so many questions

Hello !

I saw your post on reddit and was very enthusiastic. There are really few caldav calendar clients out there and yours looks like a breath of fresh air compared to others. So thank you.

Maybe you should know I'm not really familiar with coding or anything. I host a little server at home using docker, and I do what I can :p

So I tried installing Bloben. I manage to login as an admin and create accounts, but I can't log into them. I got a "unauthorized" message.

Is there any way I can easily delete unused accounts ?

Also, I'm not sure where https://my.calendar.domain.com/ should lead. I get a "Welcome to nginx!" page.

And last but not least, how can I connect to my caldav server ? I see nowhere to input the address and logins. When I add a CalDavAccount, I get an "Unknown error". I double checked caldav url (nextcloud) and username and password. Does it only support Baikal ?

Thanks for your answers.

[BUG] multi-day event not showing on month view

I have an event that goes from 2pm on one day to 1pm the following day. It shows correctly on the week view, but not on the monthly view. I expect to see the event across both days in month view.

See attached.

image

image

image

403 for all API operations

I've got bloben running in a docker container, and while I can succesfully login - all other operations against the API seem to result in a 403.

E.g. when I try to add a CalDAV account in the UI, I can see that requests against /api/app/v1/caldav-accounts are failing with a 403 and the following payload: {"code":403,"message":"Access forbidden"}

What's the best way of debugging this? There's nothing useful on standard out after:

2022-09-06T02:16:02: PM2 log: Launching in no daemon mode
2022-09-06T02:16:02: PM2 log: App [index:0] starting in -fork mode-
2022-09-06T02:16:02: PM2 log: App [index:0] online
[NODE_ENV]:  development
Bloben Api listening at http://localhost:8081

Support for CalDAV event exceptions

App doesn't support exceptions when displaying/editing/deleting repeating CalDAV events. This will be included in one of the next releases.

Can't create new events with start and end time

Using:

Docker image version 0.15.0
Calendar version
Api version 0.15.0

Trying to add new event:

{"calendarID":"5cc2880e-0986-4f1a-a435-7beea71bee01","iCalString":"BEGIN:VCALENDAR\nPRODID:Bloben 1.0\nVERSION:2.0\nCALSCALE:GREGORIAN\nBEGIN:VEVENT\nDTSTART;TZID=floating:Invalid DateTime\nDTEND;TZID=floating:Invalid DateTime\nDTSTAMP:20220903T172624Z\nUID:33bd21e2-2100-4fb0-862a-237e96fe37e8\nCREATED:20220903T172539Z\nLAST-MODIFIED:20220903T172539Z\nSEQUENCE:0\nSTATUS:CONFIRMED\nSUMMARY:e32e32\nTRANSP:OPAQUE\nEND:VEVENT\nEND:VCALENDAR","externalID":"33bd21e2-2100-4fb0-862a-237e96fe37e8"}

failed with:

{"code":409,"message":"Cannot create event: Unsupported Media Type"}

It's OK if event take whole day for example:

{"calendarID":"5cc2880e-0986-4f1a-a435-7beea71bee01","iCalString":"BEGIN:VCALENDAR\nPRODID:Bloben 1.0\nVERSION:2.0\nCALSCALE:GREGORIAN\nBEGIN:VEVENT\nDTSTART;VALUE=DATE:20220908\nDTEND;VALUE=DATE:20220909\nDTSTAMP:20220903T172809Z\nUID:98c4ce6f-0929-454f-939c-faa6f3869e8b\nCREATED:20220903T172539Z\nLAST-MODIFIED:20220903T172539Z\nSEQUENCE:0\nSTATUS:CONFIRMED\nSUMMARY:e32e32\nTRANSP:OPAQUE\nEND:VEVENT\nEND:VCALENDAR","externalID":"98c4ce6f-0929-454f-939c-faa6f3869e8b"}

result:

{"message":"Event created"}

EDIT: I see TZID=floating:Invalid DateTime
In docker-compose.yml I have set

environment:
      TZ: 'Europe/Sofia'

What is correct way to set timezone?

Selecting 'All day' reduces the day by one

  • Click to create any all day event on the month view

image

  • Unselect all day

image

  • Select all day, day is now reduced by one

image

Repeat select and unselect to decrease the day by one every time. I don't think this is intended to work this way, I think the day should stay the same.

Additionally, maybe pick a time other than 0:00 as the default (when going from all day -> select time). The chance that someone wants to create an event that starts at 0:00 is quite low.

Furthermore, maybe remember the time that was selected when you didn't intend to click all day, i.e. select time 13:00 - 14:00, click all day by mistake, unselect all day, now the time is 0:00 - 0:00 again.

CardDAV support

CardDAV support will be used for easier access to email contacts for event invites

Pre-scroll to near selected time

It would be nice when you want to change the end or start time of a event, the opened box would be at a position close to the time already present.

In the picture I wanted to set the time from 16:00 to 17:00, but the box starts at 0:00 and I have to scroll a lot to get to the desired time.

2022-06-21_14-39

Custom date strange UI End on Date

When selecting a custom end date for creating a repeating event, the UI is malformed.

image

Also for the dark theme, the theme is not applied and the pop-up calendar is not really visible.

image

Dragging a new event doesn't register the drag start position correctly

Hey - I'm impressed by this project. Saw it on HN, thanks for sharing! I played around for a while and found a minor bug that I thought I'd share.

From the main week view, I expect to be able to click and drag the length of a new event. It works if I'm very slow, but if I click and drag the event at normal operating speed with the mouse, the start position of the event is missed. There seems to be ~100ms delay between my actual click start, and when the new event's position is registered.

Hope this makes sense, take care!

EDIT: Should have added, Windows 10 Edge v 100.0.1185.29

Mobile (responsive) view

Was wondering if anybody feels neglected with current broken status for responsive UI. I think most of us use bloben as desktop app and we have other native calendar clients in our mobiles, so it was still low priority.

I think I wanted to use it only when sending event invites, but maybe with added calendar sharing it might be more in demand.

Unable to add CalDavAccount

Error appears in console when trying to add account:
POST http://localhost/api/v1/caldav-accounts 409 (Conflict)

Env config:

NODE_ENV=production
HOST=localhost
PORT=8081

DB_HOST=databaseBloben
DB_PORT=5432
DB_USERNAME=bloben
DB_DATABASE=bloben_api
DB_CONNECTION=postgres
DB_SYNCHRONIZE=true
DB_LOGGING=false
DB_ENTITIES=usr/app/api/build/data/entity/*.js
DB_ENTITIES_DIR=usr/app/api/build/data/entity
DB_MIGRATIONS=usr/app/api/build/data/migrations/*.js

## Use same password for database for DB_PASSWORD and POSTGRES_PASSWORD
DB_PASSWORD=CHANGE_ME
POSTGRES_PASSWORD=CHANGE_ME

SESSION_SECRET=CHANGE_ME
OTP_SECRET=CHANGE_ME
INITIAL_ADMIN_PASSWORD=CHANGE_ME # your login password for admin account

REDIS_HOST=redisBloben
REDIS_PORT=6379

POSTGRES_DB=bloben_api
POSTGRES_USER=bloben

APP_DOMAIN=localhost

ENCRYPTION_PASSWORD=

SMTP_PORT=
SMTP_HOST=
SMTP_EMAIL=
SMTP_USERNAME=
SMTP_PASSWORD=

Server Docker Compose:

  caldavServer:
    image: ckulka/baikal:nginx
    container_name: caldavServer
    ports:
      - '8082:80'
    restart: always

Btw. what is "APP_DOMAIN"? In documentation is just mentioned "Your domain". Domain to caldav server? Domain to bloben?

Using notes: Cannot create event: Bad request

Trying to paste a big text into a note causes an error when you want to create a new event:

{"level":"error","message":"Status: 400 Message: Bad Request: null","tags":["CALDAV","REST"],"timestamp":"2022-07-16 10:59:58"}

The error happens when I try to paste this text into the notes field:

TEST testest test TESt tes testset

17.08.2022

Test Testet test Test tet test

Teste test Teste test testetset testetet Test-Teste.  Test teste tes test, teste tetest tsetset tes te Teste tets test te Testet te Test tet Test tes teste.  Test test 4 Teset test-Tetsetset test test tsets tsets test tset tset Test-Test testet.

Test Teste test.test.test teste test.test.tset 

Syncing with DavMail

I would like to get my last missing calendars to work. Right now, the account was added successfully, the calendars are discovered and displayed on the left side. But no events are loaded. There are also no log messages indicating errors. On my davmail logs, this is logged, indicating some communication issue:

davmail-work-exchange-davmail-work-1  | 2022-05-27 05:54:52,743 ERROR [CaldavConnection-33232] davmail  - Invalid Caldav request: Unexpected EOF in prolog
davmail-work-exchange-davmail-work-1  |  at [row,col {unknown-source}]: [1,0]
davmail-work-exchange-davmail-work-1  | davmail.exception.DavMailException: Invalid Caldav request: Unexpected EOF in prolog
davmail-work-exchange-davmail-work-1  |  at [row,col {unknown-source}]: [1,0]
davmail-work-exchange-davmail-work-1  |         at davmail.caldav.CaldavConnection$CaldavRequest.parseXmlBody(CaldavConnection.java:1590)
davmail-work-exchange-davmail-work-1  |         at davmail.caldav.CaldavConnection$CaldavRequest.<init>(CaldavConnection.java:1395)
davmail-work-exchange-davmail-work-1  |         at davmail.caldav.CaldavConnection.handleRequest(CaldavConnection.java:224)
davmail-work-exchange-davmail-work-1  |         at davmail.caldav.CaldavConnection.run(CaldavConnection.java:180)

Any idea why no error is logged and what could be done to debug this issue further?

Also, at some point, the calendar starts duplicating itself:

image

Sync with malformed event not working

Hey,

first: very great Project!

I have installed bloben on my unraid and currently syncing against three different Nextcloud-instances. Two of them are working fine, but at one instance i cannot get any Calendars or appointments.
After adding the account do bloben i am getting the following error in my logs:
{"level":"error","message":"Sync caldav events error: Date is not valid - Error: Date is not valid\n at validateISOStringDate (/usr/app/api/node_modules/ical-js-parser/toJSON/validator.js:9:15)\n at formatToIsoDate (/usr/app/api/node_modules/ical-js-parser/toJSON/dateHelpers.js:19:43)\n at parseICalDate (/usr/app/api/node_modules/ical-js-parser/toJSON/dateHelpers.js:37:53)\n at splitRowToKeyValueObj (/usr/app/api/node_modules/ical-js-parser/toJSON/index.js:141:49)\n at formatStringToKeyValueObj (/usr/app/api/node_modules/ical-js-parser/toJSON/index.js:65:24)\n at getResult (/usr/app/api/node_modules/ical-js-parser/toJSON/index.js:85:43)\n at getOneEventJSON (/usr/app/api/node_modules/ical-js-parser/toJSON/index.js:99:12)\n at /usr/app/api/node_modules/ical-js-parser/toJSON/index.js:220:16\n at Array.map (<anonymous>)\n at Object.toJSON (/usr/app/api/node_modules/ical-js-parser/toJSON/index.js:219:31)","tags":["REST","CALDAV"],"timestamp":"2022-04-08 09:35:58"}

I think there is maybe a maleformed appointment in my calendar which is generating this exception. Is there any possibiliy to use some kind of try/catch to get the appointments?

Kinds
bam91

Wrong timezone on full-day events

Hi,

I just noticed that the selected timezone settings do not get applied correctly on full-day events.

For example a full-day event from a Baikal server with TZ Europe/Berlin on 28. May 2022 is displayed as an event from 28. May, 02:00 until 29. May 2022, 02:00 in Bloben (also set to Europe/Berlin).

It works fine with non-full-day events (e.g. like from 09:00 'til 10:00).

Could somebody kindly look into this issue?
Thank you very much!

Sync not working

I've successfully managed to add my CalDav account with two calendars in it. It seems the syncing does not work. I'm using the current docker-compose file.

Here is the error log:

{"level":"error","message":"Unknown error: {\"stack\":\"TypeError: Cannot read properties of null (reading 'identity')\\n    at /usr/app/api/src/api/userEmailConfig/handlers/getUserEmailConfig.ts:34:33\\n    at Generator.next (<anonymous>)\\n    at fulfilled (/usr/app/api/build/api/userEmailConfig/handlers/getUserEmailConfig.js:5:58)\\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\",\"message\":\"Cannot read properties of null (reading 'identity')\"}","method":"GET","path":"/api/v1/users/email-config","tags":["UNKNOWN","REST"],"timestamp":"2022-05-16 10:00:39"}
{"level":"warn","message":"Too many requests for URL: /api/v1/sync METHOD: GET","tags":["REST","SECURITY"],"timestamp":"2022-05-16 10:08:56"}
{"level":"warn","message":"Too many requests for URL: /api/v1/sync METHOD: GET","tags":["REST","SECURITY"],"timestamp":"2022-05-16 10:09:05"}
{"level":"error","message":"Unknown error: {\"stack\":\"TypeError: Cannot read properties of null (reading 'identity')\\n    at /usr/app/api/src/api/userEmailConfig/handlers/getUserEmailConfig.ts:34:33\\n    at Generator.next (<anonymous>)\\n    at fulfilled (/usr/app/api/build/api/userEmailConfig/handlers/getUserEmailConfig.js:5:58)\\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\",\"message\":\"Cannot read properties of null (reading 'identity')\"}","method":"GET","path":"/api/v1/users/email-config","tags":["UNKNOWN","REST"],"timestamp":"2022-05-16 10:09:06"}
{"level":"warn","message":"Too many requests for URL: /api/v1/sync METHOD: GET","tags":["REST","SECURITY"],"timestamp":"2022-05-16 10:09:09"}
{"level":"error","message":"Unknown error: {\"stack\":\"TypeError: Cannot read properties of null (reading 'identity')\\n    at /usr/app/api/src/api/userEmailConfig/handlers/getUserEmailConfig.ts:34:33\\n    at Generator.next (<anonymous>)\\n    at fulfilled (/usr/app/api/build/api/userEmailConfig/handlers/getUserEmailConfig.js:5:58)\\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\",\"message\":\"Cannot read properties of null (reading 'identity')\"}","method":"GET","path":"/api/v1/users/email-config","tags":["UNKNOWN","REST"],"timestamp":"2022-05-16 10:09:09"}

Admin Login details

so i am installed, reverse proxied via Nginx Proxy Manager and have a subdomain all set up.

I cannot log into the Admin Login.

URL: https://calendar.mydomain.com/admin
.env:
INITIAL_ADMIN_PASSWORD=123
APP_DOMAIN=calendar.mydomain.com

What creds do i use to log in?
Username?
Password?

Custom end date include last day

When I pick end repeat on date

image

then I expect that date to be included in the repetition. Instead, that last day is excluded:

image

I think usability wise one should include the last day, otherwise the last day is always missed in the repetition and you have to think and select one day in advance to include that day.

New lines in some words

For some words, line breaks are inserted and the words are split, even though there is enough space to display it without splitting. The same word is split at the same position in every event containing that word. The word in the event is not split.

image

This happens in Agenda, Day, Three days, and Week view.

Redis ENV variables?

Hello,
I am trying to get this running on unraid.
I already have a redis docker container and have managed to get the post gres stuff working...
I am sitting in the logs with

`ReplyError: NOAUTH Authentication required.
at parseError (/usr/app/api/node_modules/redis-parser/lib/parser.js:179:12)
at parseType (/usr/app/api/node_modules/redis-parser/lib/parser.js:302:14) {
command: { name: 'info', args: [] }'

with basically;

Error: Connection is closed.

I have tried ENV vars REDIS_PASSWORD, REDIS_USERNAME, REDIS_DATABASE but none of these seem to play nice.

Share Calendar selection gets to width

When adding Calendars at sharing the names of the seleected calendars are displayed in one row. When adding to much calendars the row gets to width and the pop up is getting out of the screen on both sides.

Possible fix: Showing all Calendars in a list, like in the selection

Aditional: A option to select all calendars would be nice.

PS: The sharing feature is really nice! Thanks!!

Sends calendar-query requests without {DAV:}allprop / {DAV:propname} / {DAV:prop}

Bloben appears to send calendar-query requests without specifying what sort of properties it desires. As far as I can tell, this is allowed by the RFC but it isn't entirely clear to me what the expected behaviour is. It says that calendar-query mostly behaves like propfind, and propfind specifies that "an empty body" implies {DAV:}allprop.

<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:ca="http://apple.com/ns/ical/" xmlns:d="DAV:">
  <c:filter>
    <c:comp-filter name="VCALENDAR"/>
  </c:filter>
</c:calendar-query>

Login via Keyboard

Pressing enter on login won't trigger any action (while the password field is focused), I have to use the mouse to click the login button:

image

Date picking NaN

Creating an event and picking the time interval seems to cause some issues:

image

non user-specific Radicale account

I am trying to add my Radicale account, as a general account (ie, just the domain, not with the calendar GUID). Is there a way to just pass the login details?

ie:
url: radicale.domain.com
user: user
pass: pass

then Bloben discovers all available calendars? I belive the DAVx5 works this way.

This should also enable the creation of the new calendars too.

thanks

Sharing feature

Hi, I would like to brainstorm little bit for next calendar sharing feature to catch most wanted and most useful cases for first iteration. And ditch useless one or redundant.

1. Public calendar

Public link where anybody will be able to see calendar events through Bloben interface.

  • Permissions: read only
  • Shared by email if set, or just send link

2. Webcal link

Standard, which can be easily used in other clients.

  • Permissions: read only
  • Shared by email if set, or just send link

3. Private sharing

Calendar will be protected either by token or password.
Could be possible to set expiration (view count or till date)

  • Permissions: read only / read and write
  • Shared by email if set, or just send link

4. Sharing to existing Bloben user

Either you will need to know name of another user (but guess you are also admin, so you can get it easily) or there will have to be search function for users.

  • Permissions: read only / read and write
  • Shared by app notification for displaying and accepting/rejecting calendar invitations

5. Sharing to not existing Bloben user

With shared link, user will be forced to create account before accessing calendar. This guest account will have lower permissions than standard user (not allowed to add email account, CalDAV account, etc.).

  • Permissions: read only / read and write
  • Shared by email if set, or just send link

[BUG] cannot create event with multiline description

(Using Radicale Server)

I cannot create an event where the description is multiline.

Works:
the description

Does Not Work:

the
description
the

description

there are potentially the error logs, but i cannot really tell.
image

Copy event

I'll try and explain this.

For example, I have tasks that I have to repeat over a month.

Say a client books days 1, 3, 4 and 7 of the month for a task. I'll create one event on the 1st day, then copy it to days 3, 4 and 7.
We could think of a clickable "copy" option which would make a small calendar appear letting us choose the days we want.

Later in the month, same client books same task on days 15, 21, 24 and 29. I just have to copy event from 1, 3, 4 or 7 to 15, 21, 24 and 29 from the "copy" option.

Would be easier than creating another event each day a client books.

I'm not sure I explained that well, or if that's the info you need.

Let me know if I can clarify.

Originally posted by @tiritibambix in #5 (comment)

Vertical line disapering

simplescreenrecorder-2022-05-14_22.14.04.mp4

Modifying the line width to 0.5 fixes the issue.
Using firefox.

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.