singlelink-co / Singlelink

The open-source Linktree alternative.
https://singlelink.co
GNU General Public License v3.0
547 stars 117 forks source link

vcard/vcf generation for contact info #203

Open ciroiriarte opened 2 years ago

ciroiriarte commented 2 years ago

Would it be possible to add support for regular vcard contact information?.

The use case would be:

  1. User adds a button
  2. Instead of a link, contact information related to vcard standard are asked for to the user
  3. Information is stored in the database
  4. On visitor button click, a vcard/vcf file is generated on the fly and offered as download
  5. Visitor receives the file and imports contact in his/her device contact list.

Ref: https://datatracker.ietf.org/doc/html/rfc6350

XMMR12 commented 2 years ago

if you want to do it i can make it and store it in a SQLite DB

or JSON and after that you deal with it to firebaseDB, mongoAltas DB , or postgresSQL

i have made a project in the past to generate Vcards .vcf 2.1 or 3.0 even with image data for saving important contacts and share them with others.

(from upwork) Ahmed M.

XMMR12 commented 2 years ago

it will be a downloadable ".vcf" file

Satvik-web commented 2 years ago

if you are using C#.. There is an awesome nuget package called VCard which helps you to create VCards easily.. You can just give the image url and it will give you the proper VCard with the image in it.. Here is the link for the package..

Link : https://www.nuget.org/packages/VCard/

Github : https://github.com/Satvik-web/VCard

Implementation blog : https://satvikr.blogspot.com

Or you can search for Card in VS manage nuget packages tab and install the package in the 3rd result..

jimmybisenius commented 2 years ago

I'll take a look into this, thanks for the suggestion!

simonManydata commented 1 year ago

interested!

RokeJulianLockhart commented 1 year ago

If you implement this, please allow it to support getting the VCF from a URI rather than the user needing to upload a file manually.

ciroiriarte commented 1 year ago

If you implement this, please allow it to support getting the VCF from a URI rather than the user needing to upload a file manually.

what would be the use case?, VCF already created by another application?

RokeJulianLockhart commented 1 year ago

https://github.com/singlelink-co/Singlelink/issues/203#issuecomment-1675680613

Yeah, @ciroiriarte, like https://wim.nl.tab.digital/remote.php/dav/addressbooks/users/rokejulianlockhart/contacts/7A52F4B1-F7F6-41A4-98EB-F83F9468950E.vcf - Nextcloud provides permalinks for contacts, which if linked, would allow me to automatically update the relevant contact's information externally and (if updated by a routine poll from SingleLink) would allow me to keep them synchronized. I wouldn't use this functionality otherwise; I'd just link to the VCF, which is less convenient for the visitor.

ciroiriarte commented 1 year ago

well, the usecase would be different and we should properly describe them (I believe both are valid).

In my case, I see:

  1. QR codes already provide Contact information via vCard type (I believe also related to VCF)
  2. Android can happily import vCard based contacts
  3. iOS only accepts QR of type (URL), it won't accept vCard
  4. QR vCard codes cannot be universally used for quick contact import.

As a workaround, I could go with URL only QR codes paired with SingleLink, if Single Link could provide the VCF files on the fly. That recipe would allow the convenience with just two more steps:

  1. scan URL
  2. visit SingleLink site (additional)
  3. click "import contact/vCard" button (as additional)
  4. import contact

Or I can avoid iPhone users while trying to network 😅

RokeJulianLockhart commented 1 year ago

https://github.com/singlelink-co/Singlelink/issues/203#issuecomment-1676409152

@ciroiriarte, I was solely referring to the backend origin of the VCF data, whereas you appear to be discussing how the user accesses the data. I'd also like to clarify that my italicized text was to agree that we should provide both options for upload, because most people can only support a decentralized (manual periodic upload-based) approach.

In the regard of how the data is provided to the user, I'm not of much opinion except that the data provided be consistent across platforms.

Regarding QR codes, I'm slightly confused – I view my public SingleLink on my smartphone frequently (or at least used to visit the dashboard until I realized it logged me out every time I visited) so I wouldn't have another device to scan any QR code with. I'd rather there at least be an accompanying way to download the VCF file locally.

I can always just add my aforementioned URI as a regular link entry if manual upload is somehow programmatically preferable. And yeah, avoiding iPhone users would be a great solution to a lot of problems if it were viable... 😅

ciroiriarte commented 1 year ago

#203 (comment)

@ciroiriarte, I was solely referring to the backend origin of the VCF data, whereas you appear to be discussing how the user accesses the data. I'd also like to clarify that my italicized text was to agree that we should provide both options for upload, because most people can only support a decentralized (manual periodic upload-based) approach.

In the regard of how the data is provided to the user, I'm not of much opinion except that the data provided be consistent across platforms.

Regarding QR codes, I'm slightly confused – I view my public SingleLink on my smartphone frequently (or at least used to visit the dashboard until I realized it logged me out every time I visited) so I wouldn't have another device to scan any QR code with. I'd rather there at least be an accompanying way to download the VCF file locally.

I can always just add my aforementioned URI as a regular link entry if manual upload is somehow programmatically preferable. And yeah, avoiding iPhone users would be a great solution to a lot of problems if it were viable... 😅

Regarding data input, it requires two options:

Regarding QR codes, it's external to SingleLink. You use any QR code generator, it must be URL type pointing to the SingleLink profile and will be printed on a physical presentation card.

RokeJulianLockhart commented 1 year ago

@ciroiriarte, https://github.com/singlelink-co/Singlelink/issues/203#issuecomment-1676486913

My mom's profile: she would at most type it in the SingleLink profile management interface. Textual input of the data she wants to share with other people.

So you want to add a contact designer to SingleLink? That's more work than you might expect. .VCFs can easily be exported from any modern contacts application, to my knowledge, simply by invoking the relevant context menu item on the relevant contact entry.

Regarding QR codes, it's external to SingleLink. You use any QR code generator, it must be URL type pointing to the SingleLink profile and will be printed on a physical presentation card.

What you're describing here alludes me still.

ciroiriarte commented 1 year ago

Well, if that modern app can publish a URL without authentication, that can be used today with SingleLink as is (arbitrary links are supported, right?). It just narrows the userbase that would use it, maybe a tutorial for GApps/Office 365 might expand the adoption.

I'm unequipped to discuss complexity, the final answer as always can be "we won't implement it".

After feeling clever for a minute, just found out that something like this is already present in LinkTree: https://linktr.ee/marketplace/apps/contact-details

If deemed a edge case, probably a plugin framework makes more sense to add features like this.

RokeJulianLockhart commented 1 year ago

@ciroiriarte, https://github.com/singlelink-co/Singlelink/issues/203#issuecomment-1678903757

Well, if that modern app can publish a URL without authentication, that can be used today with SingleLink as is (arbitrary links are supported, right?). It just narrows the userbase that would use it, maybe a tutorial for GApps/Office 365 might expand the adoption.

Indeed, downloading a .VCF should invoke an application picker, so it shouldn't be too complex. However,

After feeling clever for a minute, just found out that something like this is already present in LinkTree: linktr.ee/marketplace/apps/contact-details

is a superior interface

image

which was why I proposed that any implementation of such a GUI (which was always my expectation of what this issue is about) should support multiple methods of acquiring the data for it.

If deemed a edge case, probably a plugin framework makes more sense to add features like this.

Certainly. That's the gold standard.


I'm unequipped to discuss complexity, the final answer as always can be "we won't implement it".

Not entirely sure what you're referring to here.