I’m about to go down a path of posts by writing about several different WPF components which are going to be all part of the same application. For about a year now, I’ve had an idea for a desktop application I wanted to build and make available to photographers on the web. I knew from the beginning I wanted to do it in WPF because the user experience was going to be the main differentiator for this software. Problem was, I didn’t know more than a cursory amount of WPF. So, down the WPF deep dive learning hole I disappeared into for the past year and only in the past couple months has the big picture concepts in the learning curve finally started to materialize. “Aha!” moments signifying my understanding and not just comprehension of fundamental concepts and how to apply them (like dependency properties) have been happening regularly. Even though I know there’s still plenty to learn in WPF I feel I’m ready to start writing some code towards the application I’ve been architecting in my head (and sometimes on paper) for the past year beyond the occasional prototypes I’ve created here and there. I’m no graphic designer but I’ve got an eye for usability and I’ve taught myself how to use Blend and Expression Design so we’ll see how we go for user experience. Also, it’s been said the days of the one-man development shop are over because of the scope and complexity of technology nowaday’s. I’d like to prove WPF/WCF an enabler for quickly putting together viable consumer apps by a single man team. And while I’m doing that I’ll be sharing some of the code I use to illustrate how to achieve certain functionality in WPF. Why? Because the more eyes on the code, the better the quality, right?
Anyhow, let’s talk about where Zimba came from and what Zimba does at a high level.
Background
About a year ago on a long flight home I read this article in a magazine. As an amateur photographer and software architect, the idea of Zimba popped right in my head and I made a few diagrams on paper. When I got home I had my wife read the article and told her about my idea. She told me I should give it a go so here we are.
What does it do?
Zimba is a stock photo (and eventually media) e-commerce platform on your desktop. It’s a cross between Flickr, iTunes and a micro-stock site like Fotolia.
…but it’s a P2P desktop app.
In contrast to Flickr you don’t upload images to a website. In contrast to iTunes, there’s no central store server to run searches against. In contrast to a micro-stock website, you don’t have to upload 100 images and expect only a few of them to get accepted due to their quality control editors. Similar to Flickr, the online library will be community run and maintained. Similar to iTunes it’ll allow for flexible searches against the image library. Similar to a micro-stock site, it’ll allow for micro-transactions to facilitate stock photo purchases.
Yes, yes - I know I have a lot to consider and problems to solve but as I said, I’ve had a year to architect it and think through the problems.
So, here are the high level requirements:
Initial User List:
- Photographers wishing to sell stock photography.
- Stock photo purchasers.
Desktop Client Functionality:
- Ability to import media (photos), read metadata, create thumbnails, etc.
- Ability to manage keywords for media identification.
- Ability to view reports on the state of the community (how many images available, popular search keywords, etc)
- Ability to search network for keywords images, receive and preview images.
- Various E-commerce functions including account management.
More to come
So that’s the rough sketch of what I’ll be working on in my spare time. There’ll be plenty of code going on behind the scenes beyond the user experience but I’ll be as generous as I can with the WPF examples and share them here. Stay tuned and watch me turn an idea into a WPF desktop application.