gra0007 / crab.fit Goto Github PK
View Code? Open in Web Editor NEWEnter your availability to find a time that works for everyone!
Home Page: https://crab.fit
License: GNU General Public License v3.0
Enter your availability to find a time that works for everyone!
Home Page: https://crab.fit
License: GNU General Public License v3.0
With larger group sizes, it can be hard to distinguish the single-color gradient. The 'highlight highest availability' feature and hover-to-show-availability is very helpful! But sometimes there may not be enough of the 'best' option, so I might want to look at runners-up.
For me, the distinctions between the top few options is more important than the least-available options. For instance, if 14-17 of the 17 people invited can attend, I'd like to see those distinctions more clearly, whereas if only 3 vs 4 people are going to attend, I don't really care about the distinction since I'm not going to schedule it then anyways.
It would be helpful for the color gradient to reflect that (i.e. use 5 distinct shades for the top 5 options and white/grey for everything else, or plot as white up to, say, the 75th percentile, and then gradient above there, or, skew the heat map to add more distinct shades at the higher response percentages).
Another option would be to use multiple colors, like a red-yellow-green stoplight (though I guess that's not great for colorblind users... and the monochrome scheme is cute)
Happy to discuss if the issue/proposed solution isn't clear! Screenshot attached of an example where it's hard to see good options.
My local instance is under nginx reverse proxy.
When i try to create an event, I got CORS error for localhost request:
Blocking a multi-origin request (Cross-Origin Request): the “Same Origin” policy does not allow you to consult the remote resource located at http://127.0.0.1:3000/event. Reason: CORS request failed. Status code: (null).
Should I configure public URL somewere ? in .env ?
I set FRONTEND_URL in .env of api server, but this doesn't resolv this problem.
No response
No response
No response
Hi !
Please consider adding the possibility of selecting two time periods.
This would be useful, for example, for working hours (e.g.: 8am→12am / 2pm→6pm)
On the same bar
Or on two separate (or more)
Another option would be to have a range of rejected times.
No response
Hi,
we don't necessarily need to determine a quarter-hourly schedule (and sometimes it is).
It would be interesting, when creating the event, to be able to choose the time selection format (quarter-hour, half-hour, full hour).
Maybe the granularity of the time interval selector could be determined according to this option ?
No response
No response
There could be situations where an organizer wants to see all the results but not allow the attendees to see one another's availability or even names. For that situation, it would be ideal if there were a way to make an event so that someone has to log in with a passphrase or to use a distinct URL in order to view results, separate from the link shared with attendees for putting in their availability.
Just another of the things that whenisgood.net does that would get crab.fit to be a complete replacement.
I am so thrilled to discover crab.fit. I've been wishing for years that someone would do this or that whenisgood would free their source under a FLO license.
It would be ideal to have the capacity to get notified (probably by email) when responses are added or updated.
See whenisgood.net — crab.fit is the first thing I've seen that functions like it at all (and specifically is Free/Libre/Open) thank you thank you thank you!
The specific feature missing is the ability to mark availability at 3 levels: possible, fine, best.
At whenisgood.net, those are slightly different colors, and you click the level and then drag with that level, click a different level to mark that. You can test this yourself. Whenisgood currently has no payment processing, so if you make an account and click to pay $20, it will just instead say "sorry, payment not working now, here's a free pro account" and then you can see the multiple-level preference function.
Describe the bug
MIT License is wrongly specified in crabfit-backend package.json.
Expected behavior
The license should be declared as GPL-3.0-only
(or GPL-3.0-or-later
if you want, though you haven't added 'or any later version' phrase into README)
... but is linked here: https://github.com/GRA0007/crab.fit/blob/ba4cb919bd54d47deb028a87698654a2249cf5fb/api/README.md
I don't know whether the url has changed or something is really down.
When I select "Week starts on Monday" on an existing event (e.g. this one), the "Group availability" table stays with Sunday as the first day.
This is not the behaviour I expect, and is inconsistent with the "Time Format" option, which has immediate effect.
Clicking on "Week starts on Monday/Sunday" updates the table for an existing event.
No response
No response
When setting up a new installation, the following error gets thrown.
CREATE TABLE IF NOT EXISTS "person" (
"name" text NOT NULL,
"password_hash" text,
"created_at" text NOT NULL,
"availability" text NOT NULL,
"event_id" text NOT NULL,
PRIMARY KEY ("event_id", "name")
)
thread 'main' panicked at 'Sqlite does not support modification of foreign key constraints to existing tables', /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/sea-query-0.28.4/src/backend/sqlite/foreign_key.rs:34:13
stack backtrace:
0: rust_begin_unwind
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:593:5
1: core::panicking::panic_fmt
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/panicking.rs:67:14
2: sea_query::backend::sqlite::foreign_key::<impl sea_query::backend::foreign_key_builder::ForeignKeyBuilder for sea_query::backend::sqlite::SqliteQueryBuilder>::prepare_foreign_key_create_statement_internal
3: <sea_query::foreign_key::create::ForeignKeyCreateStatement as sea_orm::database::statement::StatementBuilder>::build
4: <sql_adaptor::migration::m01_setup_tables::Migration as sea_orm_migration::MigrationTrait>::up::{{closure}}
5: sea_orm_migration::migrator::MigratorTrait::up::{{closure}}::{{closure}}::{{closure}}
6: sea_orm_migration::migrator::MigratorTrait::up::{{closure}}
7: tokio::runtime::context::BlockingRegionGuard::block_on
8: tokio::runtime::scheduler::multi_thread::MultiThread::block_on
9: tokio::runtime::runtime::Runtime::block_on
10: crabfit_api::main
Compile the API using the sql-adaptor
Touch a new database file
Attempt to connect using SQLite to said database file
Migrations pass and the API starts
No response
When scheduling meetings between people in different time zones, is there a sensible way to show which times are non sleeping hours?
No response
No response
Is your feature request related to a problem? Please describe.
During a moment of cognitive overload, I created a poll that had dates two weeks in the past, rather than one week in the future, as I wanted.
I can't imagine a good use case for polling for days in the past, so I think that should be disallowed in the UI.
Describe the solution you'd like
When presented with the calendar interface for "What dates might work?" and "Specific dates", the previous month arrow would be grayed out and disabled. Days in the past in the current month would be grayed out and disabled.
Describe alternatives you've considered
None.
Additional context
In this case, I created a new poll. I wished that I could delete the old poll, see #140.
I had to fullfill one crabfit with my touchpad on my laptop : it was painful !
If we can select the whole day with one click it would already be easier.
Thanks
The link to the chrome extension (https://chrome.google.com/webstore/detail/crab-fit/pnafiibmjbiljofcpjlbonpgdofjhhkj) leads to a 404 error page. The extension also doesn't show up in the Chrome web store search.
Browser: Chrome Version 93.0.4577.63
The website seems to have some issues in the Safari browser. One of the participants of my poll couldn't enter his availability for some reason. When I access the page using Safari, I see that the "Login" and "Donate" buttons don't have any text on them:
Open a poll in the Safari browser and try to log in.
The "login" button will have no text on it.
No response
When I open my recently created polls (created 14h ago or so), I don't get any data even though I know people have already put in their information. Also, I am unable to sign up or sign in, an arbitrary error message is displayed.
The only way I can imagine is that there is a server problem. Response time of the website is very slow, which is also weird.
This is pretty obvious, my data should be displayed and I should be able to log in.
I hope this helps and that you can fix the issue at hand without too much effort.
I love crab fit and I am recommending it at least twice a day these days, but since I am running an important and time sensitive poll, the situation leaves me a little bit nervous.
All the best and thanks for the great tool!
After seeing it mentioned on HN, I used and liked this tool - and would like to spread the word in our community. So we posted this challenge for an event next week. Feel free to join in - or just reuse the approach for future hackathons. Let me know if you have any questions, and hopefully we can incentivise more usage and contributions to the code base.
Describe the bug
Assuming there is a meeting created, with n number of members, by re-sending the same requests we can alter the schedules of other users without even needing a password. Just a simple request with the right parameters (which are easy to find)
To Reproduce
Steps to reproduce the behavior:
create n accounts, for this example 2 I had created 2 accounts.
Attacker with no password
Victim with a strong password
1- Set schedules for both (or don't)
2- Get a request when making a change (as the attacker)
3- Resend the request with the request modified as user 'Victim' instead
4- The victim will have the schedule planned by the attacker instead.
Expected behavior
This should not be a normal behaviour, especially since password is required in some users, meaning that there should be some sort of access control.
Screenshots
Before:
After sending the request (no auth required):
Successfully updated, with no issues, just modifying the request.
Desktop (please complete the following information):
Additional context
This is known as Broken Access Control according to OWASP, which allows users to do actions which are out of their domain or permissions. in this example, a user may have set up a password, and another user without requiring the password can change this user's schedule availability.
A fix: would require to set session/cookies such as JWTs and verify it against the server upon change.
I'd love support for important availability data from an iCalendar format file (.ical, .ics, etc) or a URL.
This would make it possible to upload available from basically any calendar piece of software or to provide a sharing link, like NextCloud or OwnCloud or DAViCal, or any of the many other calendar tools that support iCalendar format and/or CalDAV (which using the format for data).
Ideally this would just be a third option next to Google Calendar and Microsoft Outlook.
Many people, like myself, are interested in crab.fit in large part because it's free software and open source and/or because we can install it on our own servers. For the same reasons, I keep my calendar on my own server and don't use Google or Microsoft to manage it!
For what it's worth, I use NextCloud. Here is a public link to my calendar's iCalendar file (all items are just marked as "Busy") although the format is entirely standard and may even be what the Google or Outlook importers are already using.
Let me know what I can do to help!
I hope to provide Google cloud data table structure in order to use other database instead
After build the Dockerfile in /api, when I try to run the docker image, I got this error:
$ sudo docker run -p 127.0.0.1:3001:3000 crab-fit-api
./api: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./api)
./api: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./api)
./api: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./api)
sudo docker build -t crab-fit-api .
sudo docker run -p 127.0.0.1:3001:3000 crab-fit-api
The Docker container should start.
Use in Debian 11 inside LXC container.
Is your feature request related to a problem? Please describe.
No
Describe the solution you'd like
Option to choose between selecting your free time or your busy time
Describe alternatives you've considered
Can't think of alternatives
Additional context
Some people don't have a lot of meetings, so it is easier to select busy time rather than free time slots
create themes for different crabfit users
Describe the solution you'd like
The user to change the colour to whatever they desire or add their company graphics to the hotboard
Describe alternatives you've considered
I haven't apart from having more coloures than orange
Additional context
.
Hi! I just discovered crab.fit and the UI is so nice, kudos ✨ Best alternative to when2meet and Doodle I found.
However, I found a bug related to timezones:
Describe the bug
Some timezones seem to have wrong offsets.
To Reproduce
Steps to reproduce the behavior:
Etc/UTC
(for example this one), land on event pageEtc/GMT+1
, observe how time range shifts to 11:00 to 13:00 ✔️Etc/GMT+2
, observe how time range shifts to 10:00 to 12:00 ❌ (expected: 12:00 to 14:00)Etc/GMT+3
, observe how time range shifts to 09:00 to 11:00 ❌ (expected: 13:00 to 15:00)Europe/Madrid
(currently in DST), observe how time range shifts to 14:00 to 16:00 ❌ (expected: 12:00 to 14:00)Screenshots
![]() |
![]() |
---|
Desktop (please complete the following information):
Additional context
Without this, the app is unfortunately unusable.
When opening any crab.fit event, the window title says "event not found". In the page heading, the correct title is displayed along with the correct dates, but no availabilities are displayed although they have been there a few days ago. All events have been created recently, so they shouldn't be affected by the three month deadline
No response
No response
No response
I've set up a poll about three weeks ago that let people offer their general availability for a seven-day week. The results displayed as expected until today, when I noticed that it was only showing results for three days, i.e., Sat, Sun, and Mon. The other four days were no longer displaying. See screenshot.
I expected it to show all seven days like it normally does.
OS: Windows 10 Pro 19045.3208
Browser: Google Chrome Version 115.0.5790.110
Is your feature request related to a problem? Please describe.
I schedule dozens of events per week and would like to have a single place to access all of the results. Additionally, it would be nice to be able to delete polls of past events to avoid data clutter. Finally, I would like to be able to select whether poll results are viewable by others.
Describe the solution you'd like
All of these problems will require some sort of persistent account with a dashboard and access controls.
Describe alternatives you've considered
Currently I continue to rely on a non-FLO tool, whenisgood. I can resolve the first of my three problems with a sidecar text file.
Additional context
This is clearly a larger feature and it would be nice if there could be some community input, perhaps in the form of UI mockups and development. Perhaps multiple issues to track different components would be appropriate. Starting with this one as I don't personally have the brainwidth and appreciate your efforts and vision.
Is your feature request related to a problem? Please describe.
I see there is a Crab Fit app on the Google Play Store. However, the Crab Fit app for Android is not on F-Droid.
Describe the solution you'd like
I am wondering if it would be possible to also have Crab Fit available on F-Droid.
There is an FAQ for app developers and some information for requesting an app to be packaged for F-Droid. I'm not sure if those 2 sources will contain all pertinent information finish the process 100%, but those would definitely be good places to start.
Describe alternatives you've considered
N/A
Additional context
N/A
Describe the bug
you can't scroll sideways and see the whole schedule on mobile devices.
To Reproduce
on android or iOS, load a schedule that is wide enough to require scrolling sideways. when trying to scroll horizontally like one does vertically, the page will not scroll, and touches will instead be registered as marking availability on the schedule.
Expected behavior
i expected scrolling sideways to function like scrolling up and down.
Screenshots
imgur video
Smartphone (please complete the following information):
Is your feature request related to a problem? Please describe.
I love the general UI of crabfit, but it apparently does not enable users to indicate non-preferred time slots with "if need be" (or an equivalent). Some other scheduling apps have this option, and some of my groups use it regularly.
Describe the solution you'd like
I'd like users to be able to toggle their inputs for time slots and ranges through yes, if need be and no options. This could be technically implemented for single time slots by enabling users to repeatedly left-click those slots to toggle their input through all three options. It seems trickier to combine that feature with the current ability to "drag and select" a sequence of time slots together, but there are at least a couple of potential workarounds:
Is your feature request related to a problem? Please describe.
My presenting problem is that I have a poll that is turned out to incorrect and is now obsolete (I created a new, correct poll), but no way to communicate that to the visitors to the poll. I wish I could delete the poll, so visitors would not find an attractive nuisance there (en.wikipedia.org, explaining the concept of "attractive nuisance).
Separately but similarly, it would be nice to be able to manually delete polls of past events to avoid data clutter, as mentioned in #137.
Describe the solution you'd like
An optional, nice-to-have feature: the creator can identify a new poll that replaces the deleted poll. Perhaps there would be a checkbox near the delete button that said, "Create a new poll to replace this one", and then upon deletion, visitors to the original poll see a link leading to the new poll. On deletion, the creator would be directed to create the new poll. The UX workflow for this feature, and corner cases involved (such as, creator fails to complete new poll creation) would add some complexity to easy deletion, so maybe it's not worth doing.
Describe alternatives you've considered
I reposted my original polling request with the URL of the new, corrected poll URL. This is not completely effective, because one of the places I posted the URL was to a Zoom chat, which will persist, but which I cannot correct. So it's possible the old URL will still receive visitors.
Additional context
Possibly related to:
Please add flags that allow changing the listening address and port. When deploying on a production setup, it is not always possible to provide the hard-coded port, and it would simplify things drastically if they could be changed using either a flag or an environmental variable.
Alternatively introduce some sort of configuration file that would allow settings details like this.
No response
When polling by week-day instead of specific dates, Saturday shows up twice if selected.
Sample: https://crab.fit/any-day-any-time-by-week-308952
Saturday should show up once, and selecting times on saturday should select only one saturday.
Thanks for the awesome app, we love it.
It would be cool if we could duplicate a schedule and use it to create an identical one with a different name and URL. After creating a schedule, there could be an "export" button to dump the JSON with a corresponding "import" button or simply a "use as template" button. Something along those lines.
The use case for me is scheduling tournament matches with multiple different teams. We have the same availability for both series but don't necessarily want to cross-contaminate by using a single shared schedule.
No response
No response
Hello!
When attempting to hover over the names of participants, the browser shows error Application error: a client-side exception has occurred (see the browser console for more information).
Console shows error TypeError: l is undefined
.
I have tested this with multiple crab fit events, using both Firefox and Edge (both have the same issue) and multiple other people have confirmed that this is also happening to them.
Thanks in advance!
No response
No response
When self-hosting crab.fit following the self hosting instructions, the sharing link always refers to crab.fit
as the TLD
. This seems rooted here
. I tried a quick fix, but Next.js SSR throws errors when accessing the window
object. I'm not sure what style you'd like to follow to not access window
on the server, so opening this issue to begin with.
https://crab.fit/..
The URL
resolves to the current origin + path.
No response
Hey, could anyone please help me with the GOOGLE_APPLICATION_CREDENTIALS?
How do I enter them?
...is a little flimsy when scheduling for more than 5-6 days. A slightly bigger scroll area would be neat.
Maybe a soft colored area below, which is only shown if there are more than XY days on XZpx width?
anyways, thanks for your awesome work, crab fit rocks ^^
Would it be possible to have alternative to the Google Cloud Platform™?
Thank you for your time!
When I try to create a new poll based on days of the week, the schedule view does not load: there is just an empty box without columns or rows and no labels:
The date-based poll still works.
I'm using google chrome.
Try to create a new poll using days of the week in google Chrome, Version 115.0.5790.114
No response
No response
Is your feature request related to a problem? Please describe.
After reading the Privacy Policy, I didn't see any statement on what happens to old Crab Fit event polls.
Describe the solution you'd like
I think Crab Fit can improve with respect to data retention if it automatically deletes an event poll after a sufficiently "long" period of inactivity (assuming "long enough" has been defined), since Crab Fit doesn't require username credentials or financial transaction information to create and use an event poll.
For example, I believe Framadate deletes its polls after 1-2 months of inactivity. (For some reason, I can't find any mention of this fact on Framasoft pages right now... perhaps I'm having a web search lapse at the moment.)
I believe this solution would be a win-win scenario for both users (since user-generated data won't be retained indefinitely, improving their collective privacy and security overall) and the Crab Fit servers (having to store less data is always good, especially for an open-source service that's also free with respect to cost).
Describe alternatives you've considered
Not sure if there are any alternatives (besides keeping Crab Fit the same).
Additional context
N/A
In whenisgood.net, this is basically a master poll that is used as the template. So, besides choosing days and overall time range, an initial drag-of-times sets the boundaries for when anyone else can even mark.
The value is for limiting to a set of possibilities when the poll creator knows there's no reason to have anyone answer outside of those.
For those who might be extra privacy-sensitive (but not enough to be running a zillion blocking plugins or who run them and look at tools critically based on how many requests are blocked), I suggest tweaking the calendar integrations.
What if instead of making the third-party request to Google automatically, the button was programmed to only start the request and connection to Google after someone clicks the button?
Also the request to Google Tag Manager is not ideal in this respect
Describe the bug
No calendar options are shown on Chromium when voting. An "Invalid Dates" notice is shown instead.
It works correctly in Firefox.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Voting options should appear
Screenshots
Chromium (all extensions disabled):
Firefox:
Desktop (please complete the following information):
As in whenisgood.net feature: Offer the ability to provide a longer text description for events so that people can express notes about it.
Also, an optional text field for each responder so they can make whatever statement that may be helpful. For example, "I'm available any time, so I just marked the times I prefer" or "On Thursday, I can attend, but I'll have to be calling in remotely" or whatever.
And then when looking at results, when hovering over specific people, their comment text would be shown.
Sometimes the precise time does not matter, or has already been decided, and only the date needs to be determined.
Currently, we can choose "specific date" or "days of the week", then we are compelled to choose a time range.
If no time range is required, it would be much more convenient to be able to select days in the month with the same kind of display as below :
Currently, I select the dates, and a very small time range, but I end up with a one-line selection table.
Where I would prefer to have a calendar like selection:
No response
It can be frustrating to fill out the same availability from my schedule for different events.
It would be useful to be able to save my availability grid, and apply it to new events.
Thanks for considering, and for making a great app!
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.