Omnicodoro – Building a Complex App in Coda

Welcome! I am sharing my Coda doc, as a template, so that others can learn from what I have done, and hopefully others can also contribute to the doc in meaningful ways.

For reference, I have been building this doc for the past 6+ months, and converting this doc into a template (including making the “Info & Guide” page) took about 16 hours of work. I appreciate questions or comments, but please read the “Info & Guide” section of the doc in full first, because I explain a lot in that section.

Main Features

  • Project and Task Tracking
  • Time Tracking (Pomodoros)
  • Repeating Tasks
  • Collapsible Nested Projects

The Omnicodoro Template

Video Walkthrough

Feedback for Developers

Templating a Coda Doc

HAVE YOU TRIED DOING THIS YOURSELF? Sorry… It’s been, like, 4+ hours of just trying copy my data from one doc to the other JUST to clear the history. Countless doc crashes, browser freezing, broken formulas, and many minutes of "uhhhh, do I restart now? or wait a bit… Simply deleting my data is not enough when you keep track of a doc’s history, AND you don’t let us delete doc history.

The Proposed Solution: A Coda user wants to share their doc with the world, but the data is sensitive. They click the context menu next to the doc title, and underneath “Copy doc” is “Template doc”. This option does the same thing as “Copy doc”, but it then clears the document history.

The Current Solution: For those of you wondering how I created a template of my document, I copied all content into a single page, and then copy-pasted into a new Coda doc, thus avoiding moving my history too. I had to delete all of my data from the tables first, otherwise it kept crashing. I’m sure smaller amounts of data would work, but it was not feasible for me given the formulas I had running against the data.

Template Mode for a Doc

There are some things that separate a regular Coda doc from a template Coda doc. Here are my thoughts on how Coda should support this (given that sharing templates is half of the fun).

Document Temporal Context: When a template is created, it is meant to exist in a particular place in time. A template is not a live document. Every new visitor is designed to view the template as if the creator had JUST created it. So, I propose that a Coda doc in Template Mode should have a “Document Date” option, so you can freeze the date that the Coda doc thinks it is. This would make temporal views useful beyond the exact date the template was created.

Understanding Formulas & Columns & Rows, and their Usage

Try creating a complex document with many formulas, then leave it alone for 6 months, and then come back and try to remember which formulas are used where. I tried cleaning up my doc before posting it as a template, but understanding which formulas, columns, and rows are being used or reference elsewhere is near impossible. I did my best with guesswork, and had to correct broken elements where I realized I had made mistakes. Please make this traceability better.

Summary

Thank you for taking the time to read through this post, and hopefully my “Info & Guide” page as well. I am grateful to the Coda team for building such an amazing application ecosystem, and grateful to the community for helping me understand and implement on these concepts.

Let me know if you have any questions, comments, complaints, etc., and I will get back to you.

Lloyd

14 Likes

Holy hell that looks complicated, but also impressive!

••••••••••••This is amazing!•••••••••••

:star::star::star::star::star:

I just watched the video, and I’m even more impressed. This may be the best personal task/project tracker on Coda and the most well thought out work flow I’ve seen. It is exactly the type of system that I’ve been trying to find in countless apps (Nirvana, Omni, Thing3, Anydo, Nozbe…the list goes on and on).

Package this up Lloyd.

1 Like

Haven’t watched the whole video yet, but again, that’s some monumental work!

Speaking of templates and specifically the “sample data will expire with time” problem. A super-easy solution will be to:

  1. Introduce a boolean variable indicating whether it’s demo mode or production.
  2. Introduce custom named formulas for Now() and Today() that show an arbitrary value when in demo mode, and true value when in production.
  3. Base all time-dependent formulas on those.

Also what I like doing is adding a “Nuke the doc” button somewhere that would clean up all the sample data and reset the doc to its sterile state.

But yeah, a simple way to nuke the history would be super cool. I just made a doc for myself for tracking my Coda consulting gigs, and I’d like to share it eventually without leaking my clients’ info (especially since Coda is launching a platform for such gigs, and other makers could make good use of my template).

1 Like

Hey thanks for the positive feedback. I’m actually building this plus a couple more key features in a VueJS app in my spare time. Unfortunately, there is not much free time… I’ll definitely reply to this thread with the functioning replica if I ever get it up.

Lloyd

Hey @Paul_Danyliuk, I did consider doing this. However, the formulas are already complicated enough, that I didn’t want to add in more logic just so the demo looks good. That, and I had dedicated enough time to this project already.

Good idea though. I wish it was integrated already into Coda.

Lloyd

That’s a great doc @Lloyd_Montgomery!!!

The write up and video is fantastic! Thank you so much for sharing with the community!

Some of my favorite features are being able to hide the tasks for a project, which helps for not feeling overwhelmed when looking at your whole day, and the :heavy_check_mark: and :heavy_multiplication_x: showing the button state. Great styling on top of great features!

Very well done!

1 Like

This is a beautifully constructed doc @Lloyd_Montgomery. Would you be open to publishing the template in our template gallery as well?

Regarding your feedback on understanding formulas, this is something I face pretty often in spreadsheets and in Coda as well. Have you encountered examples from other platforms where traceability helps you with “picking up where you left off?”

1 Like

Hey @Al_Chen_Coda,

Publishing the template in your gallery for me to see is certainly something I am up for. What needs to be done to do that?

For traceability, I don’t have any clear examples in my head, I already like Coda’s DocMap and perhaps it is almost there in providing this full functionality. As far as I know, the DocCamp doesn’t allow for you to see—at a column level—where data is being used. It shows which tables are referencing other tables though. Is there something I am missing?

Lloyd

I’ll message you separately about what’s need for the template gallery :). You are correct that the Doc Map doesn’t allow you to see where data is being used at the column level. You can, however, see formulas you’ve created in the canvas (which isn’t that helpful in this case given you want to see how tables are connected by their formulas):

+1 for accessible list of dependents at the column level. Was itching for this today, actually.

@Lloyd_Montgomery @Al_Chen_Coda

1 Like