While the entirety of p3k is not open source, I have open-sourced many of the components. I've chosen to provide components of my site rather than the whole thing because in reality nobody is going to want to use the exact same workflow I have built. Instead, components of my site can be re-used by others in their own way.
- Quill  - Posting interface for many kinds of posts
- Teacup  - food-tracking client
- Switchboard  - a PuSH hub
- Atlas  - APIs for looking up information about locations
- Compass  - a GPS tracking server
- Telegraph  - webmention sending API
- webmention.io - webmention receiver
- Lithograph - add screenshots to your bookmark posts
- XRay  - extract post and author data from a page
- Monocle  - reader (not currently active)
- See also: p3k naming convention
- php-mf2 - a PHP Microformats 2 parser
- mention-client-php - A PHP client to send webmentions and pingbacks
- php-comments - Helper for parsing and presenting comments from external sites
- link-rel-parser-php - Parse HTTP
Linkheaders into a structured format
- indieauth-client-php - Sample implementation and helper methods for an IndieAuth client
- date-formatter-php - Render dates and date ranges in a human-readable format, including proper microformats-2 markup
- emoji-detector-php - Finds all emoji in an input string and return information about each emoji character
- p3k-timezone - Find the timezone for a given latitude and longitude
- clone-media-fragment - enables YouTube-like time offset URLs for audio and video tags
- tantek/cassis - Used for truncating and ellipsizing post text
p3k has a built-in authorization endpoint, which supports customizing the scope granted, as well as restricting which "channels" apps can post to.
The things I am currently implementing in p3k:
Error retrieving content from GitHub. Malformed JSON was returned from the API.
These are a collection of annoyances that have respective features / improvements. As their annoyance level bubbles to the top, they're likely to become concrete "Working On" tasks.
Venues / Checkins
- Checkin posts (Need to solve what is a checkin post)
- Venue permalinks
- Find a good URL structure (I think I'm happy with the current solution)
- Need to store a mapping between Foursquare venues and my own permalinks, including handling what happens when Foursquare venues are merged/deleted
- Need a good venue search, or just defer to Foursquare checkins for now
- Replicate Foursquare lists on my site, along with a comment about why a venue is in that list
- Show venues clustered on a map
- Figure out what a venue permalink shows about the venue
- Comments from me about the venue? (e.g. foursquare tips)
- Collections the venue appears on
- A list of all my checkins at the venue? Last couple checkins? Paged feed of checkins?
- How to handle private venues? (Both from PESOSing foursquare checkins of private venues, and for checking in only on my site)
- Having real venue support would also make it easier to create events at locations, rather than just named places with no location info
These are taken from the Github issues "itching" label: https://github.com/aaronpk/p3k/issues
... and automatically generate a png thumbnail of the song
Need Further Thought
I have been using Foursquare consistently for a number of years now, and it is the authoritative source of every venue I've been. I know that if I have never checked in somewhere before on Foursquare, I actually have never been there before.
While my Foursquare feed is currently public, I'm reconsidering whether I want my "IndieSquare" feed to be completely public. I may end up being more selective about the checkins I make public instead, and keep my full checkin history private.
Examples of public checkins often include a short note from me along with the venue for things like checking in to a venue for a public event, or checking in somewhere to say I'm going to be hacking there for a while inviting people to join me. When I check in to lunch two blocks away from my office, it's not that I don't want anyone to know I'm there, it's just that probably nobody cares and there usually isn't anything actionable that would come from them knowing anyway. Usually I'm getting something to go and don't have time to stay and talk anyway.
- a push API so I can pesos checkins to my site in real time
- lots of my friends still use it
- the app still provides fun tidbits when I check in, like "you've been here 5 weeks in a row", etc
- searching for venues is difficult to implement from scratch, and I'm not entirely happy with the OSM data, so using foursquare venues continues to be highest quality
Really getting annoyed that when Foursquare venues are renamed, merged or deleted, my own history is changed.
- Figure out how to represent a "checkin" on my own site (see Creating content on the Indie Web for more thoughts)
- Figure out how to store venues on my site (venue IDs, nice slugs, ???)
- Build a basic interface for viewing "checkin" data
- Syndicate out to Foursquare and possibly Facebook (although Facebook recently deprecated checkins in favor of attaching venues to notes)
- Repurpose the Checkie app to search my site for venues and post checkins to my site first
- Download all Foursquare history and create checkins on my site retroactively
Since I carry an active GPS tracker at all times, I collect a large amount of location data. It currently provides data to location-tag all my posts, and sets the timezone of the posts to my local timezone. I do not have a feed of the raw location data available.
I'm considering publishing a new "location" post any time I change cities (or possibly also large neighborhood). Here is an example of publishing my city automatically to Facebook: http://www.flickr.com/photos/aaronpk/6962452588/
There are other non-venue locations I may want to publish, such as when I get into a neighborhood I haven't been to in a while. Ideally my phone would detect automatically when I've entered a new area or an area I haven't been to in a while. Probably I would want it to prompt me before publishing anything publicly. I could receive a push notification saying something like "It looks like you're in NW Portland for the first time this year! Publish this?" These posts are usually only interested when there is some additional information that provides context, such as "for the first time this year"