Our routine is fairly flexible and is really just what we currently do as Ewan likes to change things up every so often

We can now move the routine a bit later if we have something on, but usually have to make sure his nap is a bit later if we are going to do this.
At the moment is (usually):
4:30 -5:30 Dinner (at home or at the CM, depending on weekday or weekend)
5:30 - play or a bit of TV / DVD (depending on where he is and what the day has been like!
6:15 ish - Bath, pjs on etc.
6:45 ish Our dinner / his supper (sometimes what we are having, sometimes toast / porridge / fruit / milk
7:15 upstairs to clean teeth, bedtime story, cuddle and lights out. One of us stays with him for 5 - 15 minutes for a cuddle and then leave and he goes to sleep.
We spent a good couple of months moving to this routine as for a while one of us had to lie with him until he was asleep - often up to an hour. we slowly moved away - sit beside him, sit halfway down the bed, sit at the end of the bed, sit in a chair across the room etc and then talked about all the things he could do now he was a 'big boy' - cleaning teeth, using the potty, counting, climbing the ladder at the park etc etc and how he could be a big boy and go off to sleep by himself. The final step took about a fortnight to embed and now he is brilliant at going off to sleep after a quiet cuddle. He has not always been a good sleeper and he is still up at 6:10am precisely every single day, but the current routine was worth the time it took to sort out. He has recently started telling us it is time for a bath, time for story etc.
We found that being consistent has been the key.