Project persistence to localStorage