User Tools


v2 roadmap

roadmap in progress

You can discuss about this roadmap here at the bottom of this page.

how v2 works

A user can poche N links. He can poche a link only once. A poched link can:

  • be added / changed (title only) / deleted / updated when we poche it again
  • be tagged. There are some default tags: read, fav.

When a user calls an action, a task is created (task table in the model). Each task has a priority. Some actions must be done instantly (adding a link for example). Others can wait (huge import from Pocket for example). When an import starts, we will add N “add_url” lines in task table but with a fewer priority than poching a link from bookmarklet.

A user has a role : admin or user.

An admin can :

  • add / modify / delete a user
  • manage the config table
  • look the pending tasks (some informations will be hidden, like the URL, etc.)
  • do everything a user can do

But he can't see the poched links of the others users.

A user can:

  • open / close his poche
  • make his poche public or not
  • manage his poche (add a link, etc.)
  • look his pending tasks

The config table contains globals parameters:

  • poche open or closed
  • demo mode
  • debug mode
  • default language
  • default theme
  • enable RSS
  • enable epub / pdf export
  • enable sharing options of an article

New features

  • tags
  • search engine
  • mobile applications
  • API
  • access by RSS (with token, one by user): global feed, unread feed, one feed per tag, etc.
  • epub / pdf export (with token): global export, unread export, export per tag, etc.
  • public mode
  • offline storage
  • migration between sqlite, mysql and postgresql
  • importing in poche a poche export
  • tasks system
  • OAuth / BrowserID authentication
  • hook system to create plugins

technologies

which language / framework?

When I started poche, it was to learn something new: python, ruby, etc.

But I won't be able to start poche v2 with a new language without any help. I think I will still use PHP (hooo). I quickly tested silex, laravel, Symfony.

I will maybe choose Symfony (I developed with symfony 1.x few years ago, the community is important, lot of documentation and lot of symfony developers).

If you want to discuss about this choice, there is a discussion form.

how starting the v2

I will start to create the API and create v2 around this API, using the Eating your own dog food method.

model

link
-----
id
url
content
created_at
updated_at
user_id

tag
---
id
value
created_at
updated_at

tag_link
--------
tag_id
link_id

user
-----------
id
login
name
email
password
role
language
theme
pagination
token
created_at
updated_at

config
------
id
name
value
created_at
updated_at

task
----
id
method (name of API method)
params ("name:value/name:value/")
priority
created_at
updated_at
user_id

Discussion

Bob MaertenBob Maerten, 2013/09/25 13:12

Don't you think read/archive and favorite should be considered as tags/categories? Might ease the transition between 1.x and 2.x, don't you think?

Nicolas LœuilletNicolas Lœuillet, 2013/09/25 13:15

Your idea is a good one. I think it's a better way to do like you said. I change it.

foxmaskfoxmask, 2013/09/25 14:20

Hi,

The API will be a big contribution.

As you already know, I'm waiting for it to be able to plug my own project to “Poche” and add the datas, coming from anywhere arround the (Social) Network I could embed with ”Trigger Happy”.

Do you plan to use OAuth (to be able to link external service) ? and/or BrowerID (from Mozilla) ?

Regards

Nicolas LœuilletNicolas Lœuillet, 2013/09/25 14:32

Hi foxmask!

Concerning OAuth / BrowserID, I add it in the features. Thank you for the idea.

Happy to see your desire to plug poche with Trigger Happy :)

GomezGomez, 2013/09/25 20:15

Tests, create high test coverage and integrate travis…

lordphoenixlordphoenix, 2013/09/25 20:46

I don't think that mobile application is really necessarry. A better mobil design word be a better solution. Mobile app are evil! Make mobile website!

I'm using actual poche version as a webapp on FirefoxOS smartphone and it's ok. The only one probleme is the size of button (read, star an delete).

Nicolas LœuilletNicolas Lœuillet, 2013/09/25 21:13

concerning size of buttons, you're right… I have the same problem.

A webapp on FirefoxOS? Did you do specific thing to do that?

PierrePierre, 2013/09/26 03:58

I'm not sure about iPhone or Windows phone, but on Android, it could be nice to be able to share things to poche directly from the share menu.

But a mobile app would also let you have an offline version of the articles to read when you cannot access the Web… Not sure if it's possible to do that with a webapp right now on mobile devices.

Nicolas LœuilletNicolas Lœuillet, 2013/09/26 09:25

Hi Pierre,

The Android app exists and it adds an entry in the share menu.

For the offline version, you can do it in the browser. I made some tests, it's possible.

lordphoenixlordphoenix, 2013/09/25 21:23

Nothing specific… Open website in web browser, tap on add bokmark icon and select «add to home screen» option… :)

Nicolas LœuilletNicolas Lœuillet, 2013/09/25 21:32

ok, “just” a bookmark in fact ;-)

lordphoenixlordphoenix, 2013/09/26 14:19

Not just a bookmark. With that the bookmark is opened in a stand-alone windom not in browser window.

Nicolas LœuilletNicolas Lœuillet, 2013/09/26 14:32

Interesting.

PierrePierre, 2013/09/26 04:02

I agree with Gomez: Tests are important. Make them automatic, so you don't have to worry about those, they can be run in one command, or even better, with continuous integration tools like Travis or Hudson!

As for framework, I would love if poche v2 was using Django :) But that's a very selfish reason: It's because I would like to participate to an Open Source project using Django ;)

Thanks for this great tool, and all the best for poche v2!

Nicolas LœuilletNicolas Lœuillet, 2013/09/26 09:25

okay, I found someone to help me with Django, welcome Pierre ;-)

franfran, 2013/09/30 20:33

I would like :

  • epub export : be able to export last articles instead of recently articles (LIFO insted of FIFO)
  • Calibre integration to export in epub format and automatically synchronize my reader (SONY PRS-T1)

Symfony2 (or Silex) is good choice because it is simple to install.

Thanks for this tool,

Xavier DetantXavier Detant, 2013/12/22 00:30

I get my epub from Calibre adding a custom news feed in advance mode and using this code : <pre> import string, re from calibre import strftime from calibre.web.feeds.recipes import BasicNewsRecipe from calibre.ebooks.BeautifulSoup import BeautifulSoup

class NYTimes(BasicNewsRecipe):

  title       = 'Poche'
  __author__  = 'Xavier Detant'
  description = 'Ma poche'
  needs_subscription = True
  remove_tags_before = dict(id='article')
  remove_tags_after  = dict(id='article')
  def get_browser(self):
      br = BasicNewsRecipe.get_browser()
      if self.username is not None and self.password is not None:
          br.open('http://app.inthepoche.com/u/FaustXVI/')
          br.select_form(name='loginform')
          br['login']   = self.username
          br['password'] = self.password
          br.submit()
      return br
  def parse_index(self):
      baseURL = 'http://app.inthepoche.com/u/'+self.username+'/'
      soup = self.index_to_soup(baseURL+'index.php')
      articles = {}
      key = None
      ans = []
      for div in soup.findAll(True,attrs={'class':['entrie']}):
               a = div.find('a', href=True)
               if not a:
                   continue
               key = self.tag_to_string(div.find('a',attrs={'class':['reading-time']}))
               url = baseURL + a['href']
               title = self.tag_to_string(a, use_alt=False)
               description = ''
               pubdate = strftime('%a, %d %b')
               summary = div.find('p')
               if summary:
                   description = self.tag_to_string(summary, use_alt=False)
               feed = key if key is not None else 'Uncategorized'
               if not articles.has_key(feed):
                   articles[feed] = []
               articles[feed].append(dict(title=title, url=url, date=pubdate,description=description,content=''))
      ans = [(key, articles[key]) for key in articles.keys()]
      return ans

<pre>

PacodastrePacodastre, 2013/10/04 16:06

I recommend flask. Flask is easy to learn, very powerful, and you only bring in the modules you need. I created a project that has some similarities with poche using flask. It was far from being usable, but you can have a look at the code : https://gitorious.org/erika/erika/source/ccb8696d1d785e15cdf042c12601bb3b144e4f9d:

Dmitry SandalovDmitry Sandalov, 2013/12/28 09:06

+1 for python

Koen MetsuKoen Metsu, 2013/10/07 16:38

I'd definitely dig tags. Only thing it needs now for me.

GDR!GDR!, 2013/11/27 16:05

An Android app to sync articles for reading offline would be great.

ArnaudMArnaudM, 2013/12/12 13:40

Yeah an android app with syncing for offline reading : that's THE killer feature we need to replace Pocket.

Hope it'll be doable with new API.

Xavier DetantXavier Detant, 2013/12/22 00:42

Since my previous post is ugly, I pushed the code to github : https://github.com/FaustXVI/poche-to-calibre Hope it's help.

Dmitry SandalovDmitry Sandalov, 2013/12/28 09:07

filed a pull request for self-hosted poche


wallabag documentation

documentation for the self hostable application to save web pages

Site Tools