I have been planning to write a Spring testing book for some time now. About a month ago I tried to create a table of contents for the book. I failed miserably.

The problem was that although I know what should be in the book, I found it hard to write my thoughts down. I decided to stop thinking about it and try again when I feel inspired. That was a big mistake. As you probably figured out, the inspiration never came.

This Is My Idea

Today I decided to take a bit different approach:

I started think what kind of example application I should write. I came up with following requirements:

  • It should support multiple authentication mechanisms (form login, social sign in, and so on).
  • It should have a file upload function.
  • It should have scheduled jobs.
  • It should be possible to implement the application as a single page application and as a normal Spring MVC application.
  • It should use relational database and NoSQL database as a data storage.

After I had created this list, I had an idea about one possible example application. The example application could be a simple to-do list which has the following requirements:

  • It must be possible to create an user account by using form and social sign in (and so on).
  • It must be possible to authenticate by using form login and social sign in (and so on).
  • It must have crud functions for to-do items.
  • It must be possible group to-do items by adding tags to them.
  • It must be possible to search to-do items.
  • It must be possible to list to-do items which are tagged with a specific tag.
  • It must be possible to add file attachments to to-do items.
  • It must be possible to send email reminders to user when the due date of an open to-do item is approaching.
  • Only the owner of a to-do item can see or modify its information.

What Do You Want?

Before I start to implement this application, I want to hear your opinion about it. Your feedback is very valuable to me because I want to write a book which is both interesting and useful. I would appreciate if you would answer to these questions:

  • Did I miss an essential requirement?
  • Is the example application good enough for this kind of book? If not, what would be a better choice?

Thank you for your time!