Upgrade legacy JSP/MySQL app and port to cloud server
I'm looking for someone to help move a legacy custom-built online library from a dedicated server to a cloud server, and to make the minimum code changes necessary for it to run on modern versions of the same software. I would prefer to work with someone who has been writing JSP apps for the past 10 years so knows how Tomcat and MySQL have changed over that time. Experience with Paypal IPN and Java servlets is essential, and embedded PDF will be an advantage.
The library has about 5,000 registered users, and about 50 active (and loyal) premium subscribers. I wrote the app myself in 2003, but haven't coded much since then so I don't feel up to updating it. The design is unusual for a library in that the core data type is a volume's page rather than an article - this shift allowed hardcopy to be converted into searchable text with minimal expensive manual data capture - important for charitable organisations. The code is fairly well structured with reasonably clean separation of data services, business logic and UI, written from the ground up. It's not very well documented beyond what's in the code, but I can provide guidance and diagrams. There are about 75 small jsp files, 25 java class files, and 22 data tables.
We have now been given a grant of a few thousand pounds to stablise the app and bring the content up to date. Traffic is fairly modest, so we expect hosting to become cheaper if we move to a cloud server. Phase 1 is simply to get everything working again on modern software and equipment. If budget permits, a second phase will look at enhancements.
Phase 1: The essential tasks that need doing are:
- Set up and configure a cloud server with Apache, Tomcat and MySQL, replicating the existing setup. This would probably be with our existing hosting provider who now offers cloud hosting, although I'm open to alternative suggestions, especially a host who could provide some level of ongoing upgrades and security maintenance.
- Update the Java/JSP/MySQL code of the library app so that it will compile and run on modern versions - it is sure to be using some deprecated methods and outdated SQL commands.
- Fix currently broken areas (a) The Paypal IPN link suddenly stopped working a year or so ago. I suspect this is because Paypal now requires the request over https, something our current OS isn't set up for. I have been updating accounts manually since then, a major pain point. (b) Users are reporting problems downloading PDFs when using the latest Firefox. This is done via a servlet that generates the PDF on the fly, which will need reviewing for browser compatibility.
- Recreate the database, copy the app and copy 9.3G of data files distributed in a complex directory tree.
- Ensure that all existing functionality still works properly.
- Help with any DNS mapping necessary for the switchover.
Phase 2: Budget permitting, there are a number of improvements that could be made to the UI, login process, security, maintainability of the static content etc, as well as code refactoring for performance. However this will be defined as a subsequent project.
I expect this to be a time-based contract because we can't know how much will need doing to update and fix the app until we try. I'm willing to pay more to get someone who can demonstrate that experience, knows the pitfalls, and can work quickly.