@JeffreyKeefer have you had a look at Elgg?