Giter VIP home page Giter VIP logo

talk-to-the-city-reports's Introduction

talk-to-the-city-reports's People

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

talk-to-the-city-reports's Issues

Support Claude, Llama2 and other LLMs

The current implementation relies on OpenAI's APIs but we would want users to be able to use any LLMs.

We can leverage LangChain for this, but we'll also need to provide users with appropriate options to configure not only the models and the prompts, but also the parser that they want to use to process the LLM's output. This will be particularly important when dealing with models such as Llama2 since they cannot return well-formatted JSON outputs.

Broken buttons in "Translate" block for template "taiwan_v0"

Issue by @colleenm:

This was tested before uploading a CSV (because I don't have one matching this template). If this issue would have been resolved with a CSV uploaded already, then the issue here is really that we need to mark (or disable) this part of the UI as blocked on previous inputs.

Screen Shot 2023-12-13 at 15 24 53

  • The "Remove" button next to the default column in this list ("concat") does nothing when clicked. I expect it to remove the row it's part of, so that the "Add Key" button is the only thing under "Columns to Translate"
  • The "Add Key" button also does nothing, and has a suspicious little "undefined" next to it

Improve simple CSV upload flow for default template

The default template should be straightforward to use for many use cases, and the format of the CSV to upload should be obvious. Currently the CSV format looks like it is geared towards video interviews.

###Minimum viable resolution
Leave CSV node documentation as is

  • Add "video" and "timestamp" columns to the sample CSV

  • Append the following language to the explainer text for the CSV upload step (described in #18):
    "The following fields are required:

  • 'comment-id': a unique ID for each row of data

  • 'comment-body': the full opinion or comment from this source
    The optional 'interview' field can be used to label the source of the data in each row, such as a person's name or an interview title.
    The optional 'video' and 'timestamp' fields should be left blank for datasets without video content."

###Even better

  • change the "interview" column title to something that makes more sense given what we do with it (I don't know what this would be, it seems extraneous)

  • Also, could someone with access to the sample CSV change the title to "Talk to the City: example CSV format"?

Ability to flag an argument as incorrect

Issue by @brittneygallagher:

Repro steps

  1. open https://tttc-turbo.web.app/report/heal-michigan-7
  2. Click on Community Support > Family & Social Networks > Victims of domestic violence lack sufficient safe avenues to seek help.

Expected behavior
Non-logged in user:

  • Add ability to flag a claim as inaccurate (Claim should be capitalized)
  • claim is removed from the section in the report as well
  • For now this is any user who can do this

Logged in user: All that the non-logged in user can see as well as view this list of removed claims. This should include the following:

  • Category
  • Subcategory
  • Claim
  • Participant

Actual behavior
There is no way to hide a claim and remove it from the report.

Screenshots
image

Here's where the thumbs down came from: https://fontawesome.com/icons/thumbs-down?f=classic&s=regular

Additional context
This is v1 of a greater feature. It is needed for HM, so participants can flag any content they disagree with. More broadly we will have to consider what this looks like as we get more traction. Who should be able to disagree and we likely in future should add clarification.

Use embedded video player

Instead of opening videos in a new tab, some users would prefer to view the video directly in the report.

admin interface

Admin's need the ability to see all datasets, and well as search all datasets for various node types.

Include title, description, template as report generation page header

Issue by @colleenm:

Currently, the csv upload & config page of the report generation flow hides the info I entered on the last page, either by putting it behind a click on an easy-to-miss chevron at the bottom left (title/descr), or not showing it at all (template)

This info should be visible on the following page (for user error detection & general context):

  • report title
  • report description
  • template title

Something like this is fine for now:
Screen Shot 2023-12-13 at 16 38 01

Allow changing uploaded CSV file

Issue by @colleenm:

Once I've uploaded a CSV in the report generation view, I can't upload a different one to use instead. This means that if I mis-click in the file upload screen and upload the wrong file, I have to start a new report to correct my mistake.

Screen Shot 2023-12-13 at 16 04 59

To resolve this bug, expected behavior would be:

  • the CSV upload button persists after I upload a file
  • if there is already a file uploaded, the button text should read "Replace CSV"
  • when a new CSV is uploaded, it replaces the current one
  • no need to show an "are you sure" dialogue, the file upload process takes enough steps to prevent mistakes here

Homepage report list loading error

Issue by @colleenm:

Frequently (maybe 50% of the time), navigating from a report creation page to "Home" results in the Home page failing to load any of my existing reports for >20s.

I think this infinite load state corresponds to this console error:
Screen Shot 2023-12-13 at 14 54 34

Once the UI is in this state, I can fix it by refreshing the page. But before I refresh, I clicking the "New Report" button doesn't affect the UI (it changes the URL but not anything on the page). Ideally, this button would work to navigate me to a new page even if the homepage report list were still loading.

This happens most frequently when I've clicked "Home" from the report generation view (with csv upload, prompts, etc)

Automatically decide number of clusters

The current implementation of the clustering step defaults to a fixed number of clusters if none is provided.
We could change the algorithm slightly to let it pick the number of clusters automatically when not specified.

Relevant code:

  • pipeline/step/specs.py (where default value is currently provided)
  • pipeline/step/clustering.py

We may try to use n_topics = None when number is unspecified but it would be good to double check what it produces on the example dataset provided in this repo.

BERTopic might also provide different choices of heuristics to decide the number of clusters.

Requirements

Issue by @lightningorb:

  • use gpt-4-turbo directly on client side as per tttc-v3 repo
  • ask users to provide their own api keys for now
  • use firebase hosting, firestore and google auth (we’ll add more auth options later if needed)
  • we would only allow logged in users to create and store new projects/reports, but any projects published can be seen by anyone who knows the url, without requiring to log in (this sort of things is nice and easy to implement with firebase db rules)
  • when a user is logged in, they see their list of projects (initially empty) and they can create a new one
  • when configuring a project, user can upload a csv, then provide a slug (url for report), a name, short description, an optional prompt fragment for clustering step (to give additional instructions on how to arrange things by topics and subtopics) and a prompt fragment (for extra instructions) for the argument extraction step [please don’t show the full prompts for either step, because they include technical bits that we don’t want to expose]
  • project configurations are all autosaved to firestore (no save button anywhere)
  • next to the cluster prompt fragment config, add a “preview” button allowing users to run and see the result of this step (we can save the result in firestore)
  • next to the arg extraction prompt fragment editor, also add a preview button — if clusters are not ready, show an error and ask the user to preview the clusters first, otherwise run the arg extraction prompt on a random sample of 5 inputs (computed in parallel) and show the result somewhere (not sure about exact designs, please improvise)
  • finally at the bottom of the project config page, have a big button “generate report” running the full pipeline
  • run the pipeline on client side with same logic as in tttc-v3 and parallelising 5 jobs at a time for arg extraction
  • after a report is generated, save it either in firestore or in file storage, whichever is easier to implement first (it doesn’t matter to users and we can change this later)
  • after generation, make the reports are available at a some url (/report/{slug}) — note that there is no need for SSR or SSG and we don’t care about SEO or loading performance yet, so just basic client-side rendering of firestore data would be just fine
  • now for the report designs I would suggest to stay fairly close to current talk-to-the-city-report repo, with a big title, coloured section titles and an outline on the left, but there will also be significant changes…
  • the biggest change will be map, which will now consist of circles or dots, as discussed
  • the other big change is that we now have two levels of clusters again, with topics and subtopics
  • use colours to distinguish top-level topics and keep all subtopic titles in dark grey for now
  • for the big map at the top of the report, just show some big circles with names of topics (and number of arguments) inside each circle, without any dot, but then when the user click on a circle we can zoom and break this down into sub circles with dots inside (one challenge there is that I don’t know where we can put the names of the subtopics… maybe on top of the circles?)
  • For each subsection/subtopic, maybe we could show a similar map but already pre-zoomed to the right topic? Not sure it’s necessary at all. Perhaps best to remove the small maps completely and just keep one map at the start of the report
  • In each section, provide some examples of arguments (with precise quotes) inside the topic or subtopic. Maybe show 3 of them by default. Or maybe 5. Add a “show more” button to show the full list. If really long, maybe we can paginate a bit, but I wouldn’t worry about it immediately. This will replace the “representative comments” section we have now.
  • When hovering on a dot of a listed argument, show details and video as per current reports. Users need to click on a dot to make tooltip stick and be able to play videos.
  • Let’s not worry just yet about the appendix or about translation. I would suggest focusing primarily on heal-Michigan and other long-form English datasets (video or text).
  • I’d suggest to build this in a new private repo for now. We might want to combine this with existing oss repo at some point, but not immediately.

Feedback on first iteration:

  • The low-code UI doesn’t bring any value in this context.
  • I would much prefer a simple form letting users configure (only) some small parts of the prompt.
  • I wouldn’t show the system prompts.
  • No need for templates either. As long as user can provide a description of the dataset, we can just include it somewhere in the prompt or system prompt. Otherwise we can just have the same default prompts for all projects.
  • I would only show the subcategories when you click on the top level category (similar to Cortico).
  • I would keep the labels inside the circles. In the second screenshot that you shared I find it a bit difficult to read the labels.
  • I would also show argument counts on each topic or subtopics. The area of the circles does give you an idea of relative number but I’ll often want to know the exact absolute numbers too.

Make primary language configurable

The current code assumes in a few places that the primary language is English but some users have expressed interest in running the entire pipeline in a different language, without translating back and forth to English.

Most of the work needed to be able to run a pipeline in a different primary language will consist in writing new prompts in at language.

Then some changes in the front end may will be needed , e.g. here to ensure that we show the right language name and flag when the primary language is not English. This can be configured by introducing new top-level config parameters called something like primaryLanguage and primaryFlag.

tech debt

Some tech debt is starting to slowly creep in:

  • build warnings are ignored.
  • typescript typing is implemented sporadically, and likely badly implemented.
    • add coverage report, and upload as artifacts
  • selenium tests run against live site: needs to run again local build.
  • remove timestamps from test report in README
  • decide what to do with libs that won't run in backend

Move language picker to the header bar

The language picker isn't discoverable when viewing a report, since it's at the bottom of the page. Users who don't generate reports are unlikely to have seen our UI before and so won't know to look there for the language menu.

Moving the language picker to the top-right part of the header is consistent with where it's placed on other sites:
Screen Shot 2024-01-08 at 12 19 08

Making the language picker overall slightly smaller, and making the flag icon bigger, would help this fit in the header while also being noticeable enough for first-time users. The screenshot above shows ideal spacing and sizing.

Python lambda node

Currently the python node uses Brython, however we are already using a browser-based python node (pyiodide) and Brython is restricted to only running in the browser.

Therefor it would be best to make the Python node a real python implementation, running in an AWS lambda until we figure out the backend.

Improve replace-by mechanism (needs clearer specs)

Generalise the replace-by mechanism

  • make sure to apply it to takeaways sections
  • support links (markdown syntax)
  • when a paragraph is hovered, highlight what's produced by AI and what's written by a human

Add "Appendix" section to end of report to show code/prompts used to generate clusters

The old TttC report-only UI (currently at tttc.dev) included an "Appendix" section that let viewers see the code and prompts used for each step of the pipeline:

Screen Shot 2024-01-09 at 10 46 03

I think including this info fits with the spirit of TttC being an open-source project, and I'd like to add it back to the new UI, as a final section under all the other clusters.

The UI used previously is good: naming each step with links/buttons to show the code and prompts, with a separate note about manual changes.

If we can reuse the old code for this somehow, it's fine to drop this into the new UI unstyled while we work on overall style changes.

Design (still in progress)

Issue by @brittneygallagher:

Make template options clearer

Issue by @colleenm:

The template selector is confusing as is.

Steps to clarify:

  • Change the text revealed on the "?" icon click to:

Templates provide a way of creating multiple reports with similar settings. If you are unsure which template to use, then use the default template, which allows you to customize all available settings.

  • Show the text hidden behind a click on the "?" icon ("Templates provide a way...") as part of the UI by default, not hidden behind a click. The text should appear below the report template dropdown.

  • Rename templates with human-parseable titles:

  • blank: remove this

  • default: leave as is

  • heal michigan v1: "Heal Michigan (community challenges video interviews)"

  • heal michigan v0: remove this unless there's a strong reason to keep it -- I can't even figure out the difference between v0 and v1

Bug: report generation fails when "Number of rows to be processed" is blank

Steps to reproduce:

  1. create new report with arbitrary title/url/description
  2. choose "heal michigan" template in advanced features
  3. upload this CSV of heal michigan interviews
  4. delete the number '2' from the "Number of rows to be processed" field
  5. click "Generate Report"

Expected behavior: report is generated
Observed behavior: nothing happens (no toasts or anything)

My understanding was that this field should be left blank to include all rows of data, which I think is better UX than requiring the user to specify the exact number of rows they have.

I saw this suspiciously text-field-related console error that might be relevant
Screen Shot 2024-01-03 at 13 36 58

Better error handling in report creation flow

Issue by @colleenm:

(this affects functionality enough that I'm calling it a bug)

The report creation flow has silently failed to generate a report for me a few times.

Issues that prevented report generation include having a data set consisting of three rows where the content was just "lorem ipsum"

These failures didn't change the page UI at all, and didn't generate any console errors.

This page needs to identify error states in a way that makes them actionable to the user. An ideal error state would have
(a) an error flag visible at the user's scroll position after clicking "generate report," to call the user's attention to the problem, and
(b) a clear error indication and detailed error message on the part of the pipeline that caused problems

For (a), the current system of upper-right toasts would work great. The toast should be red. If possible, the toast should be configured not to disappear unless explicitly dismissed.

Below is a possible UI for (b), using my CSV issue as an example:

  • red border on problem part of pipeline
  • red error message
  • human-readable error message that helps the user actually fix the error. I don't know what output we get from the LLMs when something goes wrong, but we should surface as much of that detail as we think will help users address the issue.
    Screen Shot 2023-12-13 at 15 14 50

@lightningorb can you comment describing what output you saw that helped you realize that the lack of content is what caused my lorem ipsum csv to break things?

migrate talk-to-the-city-reports/scatter into talk-to-the-city-reports/reports

Currently ./scatter and ./turbo are two separate apps. Scatter's functionality can be migrated into turbo.

This however requires the ability to run python with a lot of large dependencies. This suggests we either need a more traditional backend (a VM, not Firebase deployment) or the use of an AWS lambda.

Migrating scatter into turbo does not mean we have to necessarily deprecate scatter. We could realistically keep the scatter code callable from the CLI too.

Don't use quote symbols for AI-generated content

The "representative comments" section of the generated reports currently looks like this:

image

but the use of quote symbols is a bit confusing. Some users thoughts that these comments were exact quotes from human when, in fact, they have been generated by an AI as part of the argument extraction step.

We would like to remove the quote symbols.

When filtered by participant, Feedback > I think this claim is miscategorized > Topic and Subtopic options are also filtered by participant

Repro steps

  1. Open https://tttc-turbo.web.app/report/heal-michigan-7-adjusted-backup
  2. Filter by Clarence Price
  3. Click any claim
  4. Click "!" for feedback, check the first checkbox, "I think the claim is miscategorized"
  5. Click "Topic"

Expected behavior
The list of all Topics displays.

Actual behavior
The list of Topics displays, but also includes "other"
image

  1. Select "Systemic Issues"
  2. Click "Subtopic"

Expected behavior
The list of all Subtopics under Systemic Issues displays (Prison gerrymandering, resource allocation, legislative barriers, voting rights)

Actual behavior
Only Resource Allocation dislpays (that's all that Clarence was in)

Screenshots
Add screenshots if they help explain your problem.

Improve language selector visibility

Removing the background gradient from the header bar (in PR #24) makes the flag selectors stand out less.

Replacing them with a dropdown like wikipedia has would fix this:
Screen Shot 2023-11-15 at 10 07 25

I've started work on this, issue mostly for tracking purposes

Simplify or replace pipeline framework?

As mentioned in CONTRIBUTING.md, the pipeline framework is currently automating a few things, and we would want to keep these features because they proved helpful when iterating on the pipeline with new datasets:

  • it only runs steps that have not been run before
  • it re-run steps when relevant parameters have changed
  • it tells the users in advance which steps will be run
  • you can force it to re-run all steps with '-f'
  • you can re-run all steps from a given one with '-o stepname'

This framework, however, was implemented quickly and the code (found in pipeline\utils) may be difficult to understand.
We would appreciate some help in either simplifying it or replacing it with an alternative open-source framework.

Clearer guidance in report generation flow

Issue by @colleenm:

(note: I feel light on context in making some of these suggestions, consider these points for discussion)

The report generation flow is a little light on guidance for nontechnical users. Adding the following would help:

1. More info on templates

  • Templates are identified by name only, but this means the user needs be clear about what they're looking for. Templates are also named for datasets/applications.

This is fine for now if we only have one template Taiwan uses; if Taiwan uses multiple templates, we should add template descriptions, either in the dropdown or next to it once a template is selected

2. Clearer explanation of "system prompt"

  • When the system prompt applies to only one subsequent prompt, it's unclear what the distinction between these fields should be (even to me). We should add a sentence to make this clearer to the user to avoid confusion.

3. Blank "Merge" box is weird

  • I'm guessing this is a result of this box being present in the graph flow, but not needing any user input? We should either remove it from the standard view or add a sentence describing what it is

4. "Participant filter" should specify format (heal michigan template)

  • Should this list be comma-delimited? Space-delimited? Whatever we want from the user, we should put that spec in a description on this card (ideally below the card title, not in the text input field or behind the ? icon click)

Add participant name to the URL

Repro steps

  1. Go to https://tttc-turbo.web.app/report/heal-michigan-7-adjusted-backup-final (not as the owner)
  2. Click the pipe icon in the bottom right.
  3. Scroll down to "Participant filter"
  4. Type "Holly Wilson"
  5. Click Generate Report

Expected behavior
The report output, both the circles and the text is filtered to only include Holly Wilson
A unique URL is generated "https://tttc-turbo.web.app/report/heal-michigan-7-adjusted-backup-final-holly-wilson"

Actual behavior
The report output, both the circles and the text is filtered to only include Holly Wilson
The URL remains unchanged

Additional context
It's confusing to show all these features to inexperienced users. Having a unique URL per participant will significantly decrease the confusion for participants getting to the information they need to validate.

Include better example of video data

The file pipeline/inputs/example-videos.csv only contains a few lines of dummy data. It would be great to provide a more interesting and realistic example of dataset.

pipeline does not work on conda eniroment

Trying to run the pipeline on conda enviroment with Ubuntu22.04 in python = 3.11.5. When running pipeline with example file. pipeline was interrupted with below messege.


So, here is what I am planning to run:
{'step': 'extraction', 'run': False, 'reason': 'nothing changed'}
{'step': 'embedding', 'run': False, 'reason': 'nothing changed'}
{'step': 'clustering', 'run': False, 'reason': 'nothing changed'}
{'step': 'labelling', 'run': False, 'reason': 'nothing changed'}
{'step': 'takeaways', 'run': False, 'reason': 'nothing changed'}
{'step': 'overview', 'run': False, 'reason': 'nothing changed'}
{'step': 'translation', 'run': False, 'reason': 'nothing changed'}
{'step': 'aggregation', 'run': False, 'reason': 'nothing changed'}
{'step': 'visualization', 'run': True, 'reason': 'previous data not found'}
Looks good? Press enter to continue or Ctrl+C to abort.

Skipping 'extraction'
Skipping 'embedding'
Skipping 'clustering'
Skipping 'labelling'
Skipping 'takeaways'
Skipping 'overview'
Skipping 'translation'
Skipping 'aggregation'
Running step: visualization

> [email protected] build
> next build

Errors:
/home/elilin/tttc/next-app/node_modules/next/dist/lib/picocolors.js:130
const { env, stdout } = ((_globalThis = globalThis) == null ? void 0 : _globalThis.process) ?? {};
                                                                                             ^

SyntaxError: Unexpected token '?'
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at Module.mod.require (/home/elilin/tttc/next-app/node_modules/next/dist/server/require-hook.js:64:28)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/home/elilin/tttc/next-app/node_modules/next/dist/build/output/log.js:55:21)
    at Module._compile (internal/modules/cjs/loader.js:999:30)

Pipeline completed.

Add support for adding and updating datapoints vs single csv

Add support for instead of csv, accepting a stream of new entries and updates to existing entries, for live and interactive deployments.

For some context, we're planning to deploy this where it would be useful to have a report live over several weeks for deliberation, and enable people to add new entries and update their existing entries over that time period.

Small style changes for report view bubble chart

These are interim improvements while I work out what our final UI should be. @lightningorb if any of these start to get complicated, skip for now and let me know

  • 1. Remove white outline from around all text (text should remain black)
  • 2. Change circle background color scheme to use colors light enough to support non-outlined black text
  • 3. Use font optimized for small text. I recommend Inter. (Noto sans is a fine alternative but let's try Inter)
  • 4. Remove gray circle bounding the topic bubbles (or make it transparent)
  • 5. Slightly increase padding between circles. See screenshot below

Notes:
2) color scheme: use this color palette, ideally in this order (left to right) so that reports generally use more of the left-most colors. All these colors give black text a >7:1 contrast ratio, meeting accessibility standards for small text
tttc color palette

  1. padding between circles: the padding between all the green/teal circles is about right in this image (padding around "success stories" is very slightly too much, artifact of me hacking this in the dev console):
Screen Shot 2024-01-09 at 12 48 33

Low-priority UI element nits

Issue by @colleenm:

general / all pages

  • language menu should be 100% opacity, not transparent -- currently looks weird with the text behind it
  • upper-left github link should open in a new tab (most important for report view but should be consistent)

report creation: csv upload & config

  • in the info bubbles, headings are about 50% bigger than they need to big
  • there is a pipeline icon in the lower-right corner that has a pointer cursor on hover but does nothing when clicked -- why is this here? if it's meant to indicate "you're on a the report generation page," remove the pointer cursor on hover
  • red outlines on text inputs usually indicate error states, not focus states. change the text input focus colors on this page to be blue, which usually indicates focus (or yellow-orange if someone really wanted contrast with the rest of the blue UI :) )

report view

  • the box with the bubble view is oddly placed relative to the text below it -- should be centered, and maybe a little larger.
  • the box with the bubble view would look better with a border or box shadow when a user zooms into a cluster (TODO @colleenm give exact spec for this when site is live again)

Add simple text explanations for each part of report generation flow, separate from info icons

Issue by @colleenm:

The "?" icons linking to API docs are great for experienced users who want additional info (like the exact GPT version we use), but may be confusing for nontechnical users.

Having explanations directly in each step, not hidden behind a click, would help make the process approachable for new users.

I've written up some explanation text that I think is a reasonable MVP for this. Explanations are in this google doc.

Note: we may need more guidance on the CSV upload step, I've created bug #19 for that.

This requires two non-trivial changes:

  • The participant filter step requires information from the template selection step, including the name of the field we use for participant exclusion
  • (nontechnical) We should consider writing a doc with any guidance we have on best practices for prompt extraction, and link to that in the prompt extraction steps. This is probably out of scope for Dec 23 deadline, so this bug can be resolved by just ignoring the "[link to guide if we have one]" text for now. If that happens, assign this bug back to me when the rest of it's done for managing the best practices guide writing.

The resulting UI should look something like this (but the text below may be out of date, refer to the google doc above as the canonical source):

Screen Shot 2023-12-21 at 14 21 25
Screen Shot 2023-12-21 at 14 21 50

Move complicated features behind a "Show advanced settings" button

Issue by @colleenm:

Some features will be more confusing than helpful to novice users. Put these features behind a button and hide them by default.

This button should appear at the top of the report generation page and could look like this:
advanced settings button

The features to hide are:

  • Pipeline view (this would replace the note at the bottom of the flow):
    advanced settings shown

  • Participant filter

  • Template chooser (moved from previous page, same UI, assuming this is possible -- if this is moved, no need to include template name in report header as described in #13 )

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.