Coder Social home page Coder Social logo

flowtime's People

Contributors

albanobattistella avatar bertob avatar bragefuglseth avatar chereskata avatar cnygaard avatar daudix avatar diego-ivan avatar haggen88 avatar joostscheffer avatar prokoudine avatar rene-coty avatar scrambled777 avatar suborbitalpigeon avatar tronta avatar vistaus avatar yarons avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

flowtime's Issues

A Widget/Picture In Picture Feature!

vid.mp4

A feature like Window's 10's task manager, a tiny widget that takes tiny amount of space, maybe even a option to position itself over a window

for a person with adhd even fighting against a simple timer can make a person much more productive, a feature like this could help me greatly

Use wall clock to count time

When you start a timer and close the lid of the laptop to relocate, the timer is paused and then resumed when the lid is open again. This is not necessarily the desired behavior. Perhaps Flowtime should be able to keep track of the wall clock to update the timer when needed?

Statistics backups

We should provide an option to create backups for Statistics, either allowing to copy the XML file or by allowing importing data from the CSV files.

This would require creating a UI tool to import/export them.

  • Create the UI
  • Allow exporting the XML file
  • Allowing importing from CSV

"See Detail" crashes when in initial state

The "See Details" button will reproducibly crash the app when no activity has been recorded yet.

flowtime killed by SIGTRAP

Let me know if you need any further debug info.

Clicking on the break is over notification opens a new window

I'm back with another issue 😅
Clicking on the "Break is over" notification opens a new window even when the old one is still there.
I think clicking it should take me to the old window.

I'm using gnome 44 xorg if that's relevant to the issue.

Timer won't start after break

If I start a break, when the break is finished, and I click the next button, the timer doesn't start. I have to press the play/pause button a couple times to get it to start, and sometimes it starts incrementing by 2 seconds at a time.
I'm using Zorin OS 16 (built on Ubuntu 20.04) and it's installed through Flatpak.

AUR meson build failed (updating)

Message

uhhh, idk why this exist, maybe just some dependency thing in the aur package flowtime ?

System Info

[ayhe@Oxygen ~]$ neofetch 
                   -`                    ayhe@Oxygen 
                  .o+`                   ----------- 
                 `ooo/                   OS: Arch Linux x86_64 
                `+oooo:                  Host: Jiguang Air Series GM5AGEO Standard 
               `+oooooo:                 Kernel: 6.5.9-arch2-1 
               -+oooooo+:                Uptime: 6 hours, 9 mins 
             `/:-:++oooo+:               Packages: 2049 (pacman) 
            `/++++/+++++++:              Shell: bash 5.1.16 
           `/++++++++++++++:             Resolution: 1080x1920, 1920x1080 
          `/+++ooooooooooooo/`           DE: GNOME 45.0 
         ./ooosssso++osssssso+`          WM: Mutter 
        .oossssso-````/ossssss+`         WM Theme: Adwaita 
       -osssssso.      :ssssssso.        Theme: Adwaita [GTK2/3] 
      :osssssss/        osssso+++.       Icons: Adwaita [GTK2/3] 
     /ossssssss/        +ssssooo/-       Terminal: kgx 
   `/ossssso+/:-        -:/+osssso+-     CPU: 12th Gen Intel i7-12700H (20) @ 4.600GHz 
  `+sso+:-`                 `.-/+oso:    GPU: Intel Alder Lake-P GT2 [Iris Xe Graphics] 
 `++:.                           `-/+/   GPU: NVIDIA GeForce RTX 3050 Mobile 
 .`                                 `/   Memory: 2590MiB / 15738MiB 

Last Seen Terminal Log

Program msgfmt found: YES (/usr/bin/msgfmt)
Program desktop-file-validate found: YES (/usr/bin/desktop-file-validate)
Program appstream-util found: YES (/usr/bin/appstream-util)
Program glib-compile-schemas found: YES (/usr/bin/glib-compile-schemas)
Found pkg-config: /usr/bin/pkg-config (1.8.1)
Run-time dependency gio-2.0 found: YES 2.78.1
Run-time dependency gtk4 found: YES 4.12.3
Run-time dependency gstreamer-1.0 found: YES 1.22.6
Run-time dependency gstreamer-player-1.0 found: YES 1.22.6
Run-time dependency libadwaita-1 found: YES 1.4.0
Run-time dependency libxml-2.0 found: YES 2.11.5
Run-time dependency libportal-gtk4 found: YES 0.7.1
Configuring config.h using configuration
Program blueprint-compiler found: NO

flowtime/src/meson.build:58:21: ERROR: Program 'blueprint-compiler' not found or not executable

A full log can be found at /home/ayhe/.cache/yay/flowtime/src/build/meson-logs/meson-log.txt
==> ERROR: A failure occurred in build().
    Aborting...
 -> error making: flowtime-exit status 4
 -> Failed to install the following packages. Manual intervention is required:
flowtime - exit status 4

After Installed blurprint-compiler the terminal output this:

[13/39] Generating src/flowtime-resources_c with a custom command
FAILED: src/flowtime-resources.c 
/usr/bin/glib-compile-resources ../flowtime/src/flowtime.gresource.xml --sourcedir src --sourcedir ../flowtime/src --c-name flowtime --internal --generate --target src/flowtime-resources.c --dependency-file src/flowtime-resources.c.d
../flowtime/src/flowtime.gresource.xml: Failed to locate “ui/window.ui” in any source directory.
[14/39] Generating src/flowtime-resources_h with a custom command
FAILED: src/flowtime-resources.h 
/usr/bin/glib-compile-resources ../flowtime/src/flowtime.gresource.xml --sourcedir src --sourcedir ../flowtime/src --c-name flowtime --internal --generate --target src/flowtime-resources.h
../flowtime/src/flowtime.gresource.xml: Failed to locate “ui/window.ui” in any source directory.
[15/39] Compiling Vala source ../flowtime/src/main.vala ....idgets/TimerPage.vala ../flowtime/src/Widgets/Window.vala
FAILED: src/flowtime.p/main.c src/flowtime.p/Application.c src/flowtime.p/XmlUtils.c src/flowtime.p/Models/Day.c src/flowtime.p/Models/State.c src/flowtime.p/Models/StatObject.c src/flowtime.p/Models/InformationHolder.c src/flowtime.p/Services/Timer.c src/flowtime.p/Services/ColorProvider.c src/flowtime.p/Services/Statistics.c src/flowtime.p/Services/Alarm.c src/flowtime.p/Services/Settings.c src/flowtime.p/Widgets/PreferencesWindow.c src/flowtime.p/Widgets/SoundRow.c src/flowtime.p/Widgets/StatGraph.c src/flowtime.p/Widgets/StatInfo.c src/flowtime.p/Widgets/StatList.c src/flowtime.p/Widgets/StatPage.c src/flowtime.p/Widgets/StatRow.c src/flowtime.p/Widgets/StatsWindow.c src/flowtime.p/Widgets/TimerPage.c src/flowtime.p/Widgets/Window.c 
valac -C --pkg libportal-gtk4 --pkg libxml-2.0 --pkg libadwaita-1 --pkg gstreamer-player-1.0 --pkg gstreamer-1.0 --pkg gtk4 --pkg gio-2.0 --color=always --directory src/flowtime.p --basedir ../flowtime/src --gresources=../flowtime/src/flowtime.gresource.xml /home/ayhe/.cache/yay/flowtime/src/flowtime/src/vapi/config.vapi --target-glib=2.50 --enable-checking --gresourcesdir=src/ --vapidir /home/ayhe/.cache/yay/flowtime/src/flowtime/vapi ../flowtime/src/main.vala ../flowtime/src/Application.vala ../flowtime/src/XmlUtils.vala ../flowtime/src/Models/Day.vala ../flowtime/src/Models/State.vala ../flowtime/src/Models/StatObject.vala ../flowtime/src/Models/InformationHolder.vala ../flowtime/src/Services/Timer.vala ../flowtime/src/Services/ColorProvider.vala ../flowtime/src/Services/Statistics.vala ../flowtime/src/Services/Alarm.vala ../flowtime/src/Services/Settings.vala ../flowtime/src/Widgets/PreferencesWindow.vala ../flowtime/src/Widgets/SoundRow.vala ../flowtime/src/Widgets/StatGraph.vala ../flowtime/src/Widgets/StatInfo.vala ../flowtime/src/Widgets/StatList.vala ../flowtime/src/Widgets/StatPage.vala ../flowtime/src/Widgets/StatRow.vala ../flowtime/src/Widgets/StatsWindow.vala ../flowtime/src/Widgets/TimerPage.vala ../flowtime/src/Widgets/Window.vala
gstreamer-player-1.0.vapi:250.3-250.32: warning: Instance methods are not supported in error domains yet
  250 | 		public unowned string get_name ();
      | 		^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
../flowtime/src/Services/ColorProvider.vala:67.13-67.28: warning: `Gtk.StyleContext' has been deprecated since 4.10
   67 |             Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (),
      |             ^~~~~~~~~~~~~~~~                                                      
../flowtime/src/Services/ColorProvider.vala:77.13-77.28: warning: `Gtk.StyleContext' has been deprecated since 4.10
   77 |             Gtk.StyleContext.remove_provider_for_display (Gdk.Display.get_default (), current_provider);
      |             ^~~~~~~~~~~~~~~~                                                                            
../flowtime/src/Services/ColorProvider.vala:89.13-89.41: warning: `Gtk.CssProvider.load_from_data' has been deprecated since 4.12
   89 |             break_provider.load_from_data (
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Services/ColorProvider.vala:95.13-95.41: warning: `Gtk.CssProvider.load_from_data' has been deprecated since 4.12
   95 |             break_provider.load_from_data (
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Widgets/PreferencesWindow.vala:10.5-10.58: error: UI resource not found: `/io/github/diegoivanme/flowtime/preferenceswindow.ui'. Please make sure to specify the proper GResources xml files with --gresources and alternative search locations with --gresourcesdir.
   10 |     public class PreferencesWindow : Adw.PreferencesWindow {
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Widgets/StatInfo.vala:9.1-9.40: error: UI resource not found: `/io/github/diegoivanme/flowtime/statinfo.ui'. Please make sure to specify the proper GResources xml files with --gresources and alternative search locations with --gresourcesdir.
    9 | public class Flowtime.StatInfo : Adw.Bin {
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Widgets/StatList.vala:10.5-10.48: error: UI resource not found: `/io/github/diegoivanme/flowtime/statlist.ui'. Please make sure to specify the proper GResources xml files with --gresources and alternative search locations with --gresourcesdir.
   10 |     public class StatList : Adw.PreferencesGroup {
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Widgets/StatPage.vala:9.1-9.40: error: UI resource not found: `/io/github/diegoivanme/flowtime/statpage.ui'. Please make sure to specify the proper GResources xml files with --gresources and alternative search locations with --gresourcesdir.
    9 | public class Flowtime.StatPage : Adw.Bin {
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Widgets/StatRow.vala:10.5-10.34: error: UI resource not found: `/io/github/diegoivanme/flowtime/statrow.ui'. Please make sure to specify the proper GResources xml files with --gresources and alternative search locations with --gresourcesdir.
   10 |     public class StatRow : Adw.Bin {
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Widgets/StatsWindow.vala:10.5-10.41: error: UI resource not found: `/io/github/diegoivanme/flowtime/statwindow.ui'. Please make sure to specify the proper GResources xml files with --gresources and alternative search locations with --gresourcesdir.
   10 |     public class StatsWindow : Adw.Window {
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Widgets/TimerPage.vala:10.5-10.36: error: UI resource not found: `/io/github/diegoivanme/flowtime/timerpage.ui'. Please make sure to specify the proper GResources xml files with --gresources and alternative search locations with --gresourcesdir.
   10 |     public class TimerPage : Adw.Bin {
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../flowtime/src/Widgets/Window.vala:9.1-9.52: error: UI resource not found: `/io/github/diegoivanme/flowtime/window.ui'. Please make sure to specify the proper GResources xml files with --gresources and alternative search locations with --gresourcesdir.
    9 | public class Flowtime.Window : Adw.ApplicationWindow {
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
Compilation failed: 8 error(s), 5 warning(s)
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
    Aborting...
 -> error making: flowtime-exit status 4
 -> Failed to install the following packages. Manual intervention is required:
flowtime - exit status 4

Lock Screen option

Personally, I find it convenient to have the screen locked for the duration of the break time (GNOME Pomodoro has this option) to get me out of the desk. The lock could be bypassed, but it would be an extra action.

Do you think it's something you would want to implement?

Tooltips for Buttons

The accessibility would be improved if there were tooltips for the buttons. For example, "Start / Stop Timer" and "Toggle Work and Pause Stage" would help to identify the function of the buttons without clicking on them.

Consider removing recoloring

Recoloring has been problematic at the time of development, replacing the accent color change with the old green accent that Flowtime had must be considered.

No Italian Language

HI,

I sow that Italian language is not available. Something wrong?
Thanks.
A.

[Feature Request] Gnome-Shell Integration

Basically just having an applet in the top bar in gnome or the equivalent in kde would be amazing, kinda like in the pomodoro gnome app (extension).

Screenshot from 2022-04-30 06-58-34

This at least for me would completely replace the pomodoro app, for the activities i actually like to do, and surely would be good for other people too.
Keep up men, this app is really amazing.

Feature: Add labels, comments and/or tags to work blocks

Hi,

First, thanks for the app it's the best one I've found for this kind of timer on Linux!

I think it would be a nice addition to be able to add short labels or tags to work blocks, potentially with longer comments in a separate field. This enters more in the time-tracking side of things, so maybe it's out of scope for this app, but I think it would pair nicely with the current Statistics summary.

Thanks!

Collect break times

I'd like a setting which causes break times to be "saved for later", whenever I decide to start working again before the break is actually over. The scenario often looks like: I worked 2 hours, switch to break, notice after 2 minutes that my lunch is not ready (just an example) and go back to work. My well deserved break time is lost and if I want to take a break 10 minutes later, it will only give me 2 minutes. :(

Flowtime (flatpak) fails to run in Pop!_OS 22.04

Since upgrading to Pop!_OS 22.04, I have been unable to run Flowtime either by clicking on the application icon or by running it from the command line. When trying to run your application from the command line, I get the following output:

flatpak run io.github.diegoivanme.flowtime

/home/patrick/.var/app/io.github.diegoivanme.flowtime/data/statistics.xml:1: parser error : Document is empty

Hopefully this is something that can be easily fixed, I really do enjoy using your application.

Just a bit more information about my system:

OS: Pop!_OS 22.04

Kernel: 5.17.5

DE: Gnome 42

GPU: Nvidia (x11)

Fix typo

I think it was supposed to be "5.0"
Captura de tela de 2023-10-10 20-55-21

List each work session in the statistic details view

Thanks for rolling out the Statistics feature I requested. One aspect that was lost in translation is the detailed view. Rather than adding all of the work time up for each day, I would like a list of each work session. This allows me to both keep track of what I've done (eg: last work session I was designing a wireframe. I see here that I spent 25 minutes on it) and notice patterns (eg: I see I worked 3 fifteen minute sessions in the morning, but worked for an hour straight in the afternoon).

ksnip_20220502-105503

UI missing an icon

Hi
Thanks for building this App.
Its seems like break button is missing an icon image
image

Break time statistics should only include spent time

Currently when prematurely stopping a break (e.g. 5 min spent, 15 min left), the whole time of the break (5 + 15 = 20 min) gets counted in the break time statistics.
In my opinion, this should probably be changed to only include actually spent time in break.

Make window draggable

The window is draggable only from the headerbar. But since there isn't any border on the bottom of the headerbar, it's hard to figure out.

For example Amberol or Kooha supports it.

Zaznam.obrazovky.z.5.6.2022.13.44.29.mp4

Manually add to current day's work time

Sometimes I forget to switch to work stage and notice after half hour. Would be great to have a (very simple) option to manually add work time for the current day, like a "+"-Button on the work stage page or something. When you're at it, the opposite might be useful as well, i.e, you forgot to switch to break but are busy with lunch for 20 min already. In such case you could press "-", remove some time and switch the stage. So far I've compensated for these cases "manually" by starting the work stage later than when I really started to work again.

Customization for break time

Currently it just divides by five, which is a little bit too less for me
I would like to be able to have a custom "formula" to caluclate the break time
If that's too complicated to implement, I would just accept a different number other than 5.

More simplicity in app icon

This is a feature, improvements request. Application icon looks inconsistent, all other application have one instance of something, and this beautiful app have two of them. Two sand watches I mean.

Allow decimal values for "break time divisor"

While dividing works well for controlling how much break you get per work, it currently lacks a lot of granularity.

Current values allow for: 50%, 33%, 25%, 20%, 17%, 14%, 12.5%, 11%, 10%

Say I wanted something like 40%, or a 3 divisor felt too long but 4 too short?

I therefore propose that you allow users to enter any decimal value in the text field, but keep the (+) and (-) buttons so it is user friendly

Looks like the "Autostart" behavior changed

Before I describe my problem, let me to tell, that this is a very good app, I like it very! Thank you! :)

So, looks like the "Autostart" behavior changed since the last update and I'm not sure that the new behavior the expected or it is just a bug.

Before:

  • Autostart enabled
  • When the user click on the "Next stage" button in "Work stage", the stage switching to "Break stage" and the counter start ticking.
  • After the counter reach zero, the user get a notification and the app waiting for some user action...
  • When the user click on the "Next stage" button, the stage switching to "Work stage" and the counter timer start ticking automatically.

After:

  • Autostart enabled
  • When the "Next stage" button clicked in "Work stage", the stage switching but the counter doesn't start automatically.
  • After the user start it manually and the counter reach zero, the stage change automatically and the "Work stage" timer start ticking...

Again, I'm not sure what the expected behavior here, but I think, the 'Before' behavior is better. The "Autostart" checkbox doesn't mention that the stage will change automatically, just to the timer will start automatically. Actually a little annoying to start the work stage automatically - the timer maybe start earlier than the user actually get beck to the laptop. But very convenient that the counter start when I change switch work stage (or switch to the break stage).

Flowtime version: 3.0

Shutdown hook to save work time?

Would it be possible to notice when the system is about to shutdown? My impression is that if I work for a while and suddenly decide to leave (i.e., shutdown my system), the work time is not saved. I got used to switch to break for no reason from time to time to not lose the work time I've spent but that seems wrong. A kind of "auto save" functionality might do as well.

Add Hindi translation

@Diego-Ivan Could you assist me in adding Hindi translation to this project. I don't have knowledge to open merge request.

I have uploaded it as a zip file here.

Flowtime.zip

Will really appreciate your help.

Reconsider statistics page design

The statistics page has currently a nice display, yet it has caused many troubles with the circles as they are made with CSS. It may also be problematic in regards of accessibility.

The layout should be reconsidered

Make libportal dependency optional

libportal allows flowtime to talk to xdg-desktop-portals, providing integration into the host system when running as a container.

Installed natively, libportal is not needed to access host resources. It seems therefore useful to add an compile time option whether the artefact is containerised.

Thank you

Log work and break time

I'm really enjoying Flowtime. One feature that would help me is being able to refer back to a log of my work and break times.

One reason is because I track my time for work, so having a log to refer back to would make this easier than remembering to enter my time after every work period.

The other reason is so I can observe any behaviors that would be helpful to know. For example, see if there is a particular type of day I work for longer periods of time.

Ability to synchronize between multiple machines

I work across two machines primarily and would really like to sync my Flowtime data. I believe that Flowtime stores its data in $HOME/.var/app/io.git...flowtime/data/statistics.xml and wanted to know if you think there would be any issue syncing this file across machines with something like Resilio or Syncthing?

Would this work as long as I don't have a timer running on both machines simultaneously? I guess it depends on when Flowtime reads/writes to this file. Could you provide some insight into whether this would work?

Thank you for the great app by the way, it introduced me to Flowtime when I came across your app searching for a Pomodoro app. I hadn't heard of Flowtime before but it seems to alleviate many of the issues I had with Pomodoros.

Build failure

Latest git code ('main' branch):

gstreamer-player-1.0.vapi:250.3-250.32: warning: Instance methods are not supported in error domains yet
  250 | 		public unowned string get_name ();
      | 		^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
../src/Application.vala:88.29-88.43: error: The name `AboutWindow' does not exist in the context of `Adw' (libadwaita-1)
   88 |             var about = new Adw.AboutWindow () {
      |                             ^~~~~~~~~~~~~~~     
Compilation failed: 1 error(s), 1 warning(s)
ninja: build stopped: subcommand failed

libadwaita 1.1.0 installed (Ubuntu 22.04)

Make usage a little bit more self explenatory

I really like the simple and clean design of the app… however it would be great, if it could be a little bit more self exploratory.
What happens when pressing the play button?
What happens when pressing the fast forward button?

Maybe a mouse over could help?
Or sth in the header?

Symbolic Icon

Flowtime has never had a proper symbolic icon, despite my numerous and failed attempts to create one. It is needed for the app's own identity, but I'm not able to come up with something nice. Any contributions are welcomed!

feature: GNOME Shell Integration

I think it would be great if a timer, accompanied by a stop/continue button, could be integrated into the GNOME title bar as shown in the picture below. It would make the app more convenient because users wouldn't need to switch apps to monitor the timer.
image

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.