I had two inspirations. One, my best friend told me to program it. He has been the administrator of an indexing project that has been going on for over four years. It is his job alone to procure the images needed, organize the indexers, send them the images, receive their transcriptions, put it all together, and in the end, he puts it on a web site for anyone to search. It is a huge job to keep track of everything and often leaves the admin no time to participate in the indexing. He is not alone. Genealogy societies, special interest groups, and smaller research groups have no access to an indexing tool. How many times has a society wanted to have an indexing project and was able to find willing members to index but no one was willing to be in charge?
My second inspiration was Reclaim the Records. They have only begun and have already procured several useful record indexes. But who is indexing them? FamilySearch graciously digitized the ones received on microfilm, but I could find nowhere that they had started an indexing project, and I haven't heard of any other group doing so. By having a central location for indexing, anyone can sign up and join in the project.
What it does
CSI provides a back-end tool for the project administrator to set up an indexing project. They provide the program with the information to get started, including the images and the fields they request to be indexed. Anyone can sign up to index, and they can visit the site to index more whenever they feel like it. No one has to be sent batches of images. Everything is done online by the program, indexing and administration. CSI takes care of the nitty gritty of tracking which images have been indexed and how many remain, and providing them to a willing indexer on demand.
How I built it
I used PHP, MySQL, and Bootstrap. I recently added Bootstrap to my repertoire and I used it in part to make the site more responsive. It may not be easy to index on a cell phone, since you can't see much of the image or the fields to type while the keyboard is visible, but it is possible. The images are shown using HTML5 Canvas and the canvas is responsive to touch controls.
Challenges I ran into
I hit a lot of small challenges along the way as I approached certain parts of the project. I had to learn how to use Canvas to present the images the way I wanted, after having trouble trying to do almost the same thing a few years ago. I had to devise how to keep track of indexed records in the database so each set could have different information being indexed, without creating a monstrous-sized table. I have only recently begun using Bootstrap and had to figure out how to use even more of it. I am really good at writing custom code, but I'm not as good at writing customizable code, and I had to do a lot for this project.
Accomplishments that I'm proud of
I was especially proud the day the program became functional. I meant to program the indexing part first, but instead I did much of the admin section instead. I was able to create a project and set it up completely before I created the means to actually do the indexing. Putting the code onto the Internet and letting my favorite usability tester try it was also a great moment.
What I learned
I began computer programming in sixth grade, learning Basic on an Atari 800, studied programming in college, and was a web site developer by profession for a number of years. Upon moving to Utah, I focused on my genealogy research business instead. It seemed that I had forgotten about my love of coding for a little while but I'm happy to be back at it with a project this worthwhile. I look forward to continuing to improve CSI.
What's next for CSI: Crowd Sourced Indexing
There are a lot more improvements still to come for CSI. It's only just gotten started. Some improvements have already been made from what was originally written. I focused a lot on setting up indexing projects but I want to allow a little more leeway in editing projects later, including adding more files and even editing the completed transcriptions. I have plans in the works for a couple more levels of admins, including group admins and project managers. I want to do more with groups, allowing some to be private and allowing some projects to only be available to certain groups. The latter part of that is already in place, but not all of the programming for groups is there to go along with it. I already have user statistics built in and I want to use that more to gamify the indexing. By the time RootsTech rolls around, all of these may be finished and I'll have another list of improvements to work on.