I'll be showing you the general process, but of course you should make these whatever size or shape you require.
You will need:
Fabric for your shell
Fabric for your lining
Fabric for your interlining, if your other fabrics are very lightweight
Cardstock or construction paper
Snaps (the pound-in kind, not the sew-in kind; I used Dritz 3/8" Snap Fasteners)
A closure of your choosing, or two buttons and some thin elastic cord
And miscellaneous sewing stuff, like thread, scissors, pen/pencil/chalk, ruler, etc.
Step 1: Make the Template, Cut the Fabric
Next, sketch the lid. Start with a rectangle as tall as the depth (or thickness) of your bag, and add 1/2". This is the minimum needed to cover the top of the bag. I forgot to add 1/2" to mine, so my bag is a little wonky. Above the rectangle, sketch the shape of the lid that will overlap onto the front of the bag. Again, don't worry about symmetry.
Fold your templates in half, with the fold running from top to bottom. Cut out your templates. Place your front template with the fold on the fold of your fabric. Trace and cut one from the shell and one from the lining fabric. In this case, my shell is purple and my lining is green.
Lay the fold of your front template and your lid template on the fold of your shell fabric, with the templates lined up to make one contiguous back piece. Trace and cut, then repeat with lining fabric.
Measure around your front piece: down one side, across the bottom, and up the other side, but not across the top. Add one inch to that measurement for wiggle room. This is the length of the rectangular piece that will give your bag depth. The width can be whatever width you like, plus one inch for the seam allowances. Cut one piece each from the shell and the lining.
Step 2: Sew the Shell and Lining
Place shell inside lining, right sides together, such that seam allowances are visible on both the outside and inside of the bag. Stitch around, leaving a roughly 5 inch gap on the top front edge.
Turn bag right-side out through the gap. Tuck raw edges in and stitch. If you want to be fancy, slip stitch by hand. If you want to be fast and lazy (like me), topstitch very close to the edge.
Press edges to make them nice and crisp.
Step 3: Make the Straps
The width of your fabric strips should be 4", which will result in a 1.5" wide strap. The length will depend on how wide a belt you will need to accommodate; just remember to add an inch of seam allowance and at least 1.5 inches on each end to place the snaps. For a belt of width x, your length should be a minimum of 2x + 4. I cut my strips 9" long, resulting in an 8" strap that will accommodate a 2.5" belt.
For each strap:
Fold each edge 1/2" inwards and press, trimming corners. Then fold in half lengthwise and press. Stitch, about 1/8" from edge.
Fold the strap over your belt (or a placeholder of the same width, if you don't have your belt handy), right sides together, and line up the ends. Mark where the snaps will go, remembering to mark the top and bottom piece.
Step 4: Install the Snaps
Follow the directions on the package. Some snaps call for a special anvil, but for some kinds (such as the kind I used) you can use a thread spool as an anvil.
Check the photos to make sure your snaps are facing the correct way (the strap should close to form a teardrop, not a circle).
You can see that on mine I have extra snaps. I thought I needed them to make the straps adjustable, but I was wrong. Ignore that. You only need one male and one female snap per strap.
Step 5: Attach the Straps to the Bag
If you want to be fancy, put your shell colour thread on the spool and your lining colour thread on the bobbin, and it will look neat (make sure your tensions are correct before you sew the real thing). Otherwise, use your shell thread for both spool and bobbin.
Stitch each strap down in a rectangle, being careful to keep the front of the bag out of the way so you don't stitch the bag shut. Smaller bags are a bit trickier. I found it helpful to turn the bag inside out while I was sewing.
Step 6: Add the Closure
Knot a loop in a piece of thin elastic cord, ensuring the loop is big enough for the button to pass. Cut the leftover elastic. Stitch the elastic to the underside of the lid, loop pointing out, stitching through the knot and on both sides of the loop to secure.
Sew on a button for the loop to secure to. I like to have two buttons, one for when the bag doesn't have much in it, and a looser one for when the bag is full.
Sew another button on the outside of the lid, right over where you stitched the elastic. This has no function, but it looks pretty.