Hello there. I send packed lunches to school and I always send a side of vegetables (cucumber, carrot, lettuce, tomato, radishes, peppers, etc.), a fruit side (cut up apple, orange, mandarin, peach, strawberries, raspberries, blueberries, melon, grapes, etc.) and either a cold main dish or a hot main dish. For cold, I send things like sandwiches (you can go for made up or deconstructed, depending on what your little boy likes), wraps, cold pasta/rice/couscous salad, crackers with some sort of spread, picnic selection (cold mini sausages, cheese cubes, veg cubes, bread sticks, fish crackers, hard boiled egg), savoury pancakes, chicken dippers. For a hot main dish, I use thermos funtainer and I send pasta in tomato sauce, pasta bolognese, mac and cheese (rarely), various soups, sausage casserole, stew with mash potato layered in, or sometimes mash mixed with veg and meat; risotto; pie filling with mash on top. I'd send curry but my daughter doesn't like it. Stewed squash can also go in the thermos, and you can mix it with veg and protein to make a more balanced meal, or add cold meat and veg on the side.
I sometimes send in yogurt as well but not too often because she doesn't eat the whole pot.
I don't usually put in a treat but things like dried fruit can count as a treat.
I always add a bottle of water and little plastic cutlery when needed.
I use ice packs to keep the dairy/veg/cold meat cool, and when I use the thermos, I just put the ice pack on one side of the lunch bag (away from the thermos).
Sorry for the novel...