Come al solito per questo tipo di domande, non c'e' un modo migliore.

Mi pare scontato che ci voglia un database, altrimenti tutte quelle informazioni "storiche" dove le metti? Come le recuperi quando servono?

Per il linguaggio, ne va bene uno qualsiasi possa interagire decentemente con un DB e con l'utente. Quindi dipende da quello che conosci tu.