This is not a beginner sewing project, but it's not extremely advanced either. You should have some experience using a sewing machine and knowledge of sewing terms like 'seam allowance' and 'presser foot' - or the willingness to look them up elsewhere!
Step 1: Tools & Materials
- 2 yd fabric (more or less, if you're making it REALLY big add another half yard)
- 3 yd 2" wide nylon strap 
- 1 24" zipper (or as long as you want the duffel to be)
- 2 8" zippers for the exterior pockets
- 2 12" zippers for the interior pockets
- 2 packets of double fold seam binding, one regular and one wide (I am actually using bias tape, but I'm using it AS seam binding and referring to it as such. Either will work)
- sheet of flexible plastic - I cut the bottom out of an old laundry basket
- 2 "swivel snap hooks" (see pic)
- 1.5 yd of nylon strap, of a width to fit your snap hooks 
- 2 D-rings or, my preference, triangle shapes
- 1 yd of nylon strap of a width to fit your triangles 
- a little bit of padding: quilt batting, old blanket, etc.
 Note that you may end up with nylon strap in three different sizes, or only one size; I used two sizes as my snap hooks took 2" strapping and my triangles took 1".
I used to have a nice picture of all the requisite pieces, but my camera ate it. Sorry!
Step 2: Cut Out the Pieces
- 2 side pieces
- 2 bottom pieces (the bottom is double thickness)
- 4 end pieces (or 2, if you want to leave out the inside pockets)
- 2 side pocket pieces
To cut the end pieces, draw (directly on your fabric is fine, or on a piece of newspaper if you prefer) a straight line as long as the width of your plastic piece plus an inch for seam allowance. This will be the bottom. Now draw the sides and top as part of a circle, or other bulgy shape - I like to make it slightly triangular - at a size that looks like a good one for your needs. Measure the circumference at half an inch in from the edge (for seam allowance!) and write it down as you'll need to calculate the side piece sizes from it. Mine was about 40" (precision of an inch is plenty).
Using this circumference measurement and the size of the bottom plastic, if you have a restricting one, calculate the sizes of the fabric pieces to cut for the bottom and sides as follows.
For the bottom, your sewn measurement should be 1/4" greater all around than the plastic reinforcing piece, to account for its thickness. For me, this worked out to 10-1/2 x 17 inches (I cut the plastic a little shorter than I absolutely had to, by accident).
From my 40" circumference, I then subtracted the 10-1/2" for the bottom piece, and another 1/2" for the width of the zipper, to get a difference of 29". This distance comprises both sides, each of which must therefore have sewn dimensions of 14-1/2" x 17".
The handles will lay at about the thirds of the bag length, putting them about 6" apart. So that's the width of my side pocket pieces, which will be sewn between the handles. Accuracy in the width is less important here as the straps are 2" wide and will cover the edges.
The cut pieces should be one inch bigger in each direction than the sewing dimensions, for seam allowance. So my final cutting dimensions are these:
2 @ 11-1/2 x 18 (the bottom pieces, remember it's a double layer)
2 @ 15-1/2 x 18 (the sides)
2 @ 10 x 6 (the side pockets, which I just decided would be 10" tall based on eyeballing it)
Whew! Measure again to doublecheck yourself before you cut. Sewing as well as carpentry uses the advice "measure twice, cut once".
Step 3: Construct the Sides
Lay out each side piece upside down. Lay the handle reinforcement pieces about 2/3 of the way to the top and with their centers each 4" from the middle of the sides. Pin the corners down and then sew them down thoroughly, just stitching all over, back & forth. This will show on the front, but if your thread matches, it won't show much. I've used a contrasting thread just because I like it.
Sew seam binding over the edge of each of the side pocket pieces. Then sew to each one of the short zippers, with the zipper upside down as in the picture. Then fold the zipper up, and topstitch for strength. Pin the pocket & zipper to the side piece so the bottom of the pocket matches the bottom of the side, and the top corners are over your reinforced areas. Sew the other edge of the zipper to the side piece, going over it several times. Stitch the sides of the pocket down, you only have to do this once as the handle straps will go over those edges anyway.
Cut 2 pieces of the wide nylon strap, each about 48 - 60" long depending on your bag size, for the handle straps. Before you cut, pin the strapping down and hold it up imagining the completed bag, so you don't make the handles too long or short.
Lay the cut straps out along the sides of the pocket with the ends at the bottom of the side. Make sure the part that will form the handle isn't twisted. Sew these down very solidly, from the bottom up to a few inches past the pocket, ending within the reinforced area. Pay special attention to these top areas as that's where most of the strain will be. I like to sew big X's.
Finally, sew seam binding around the top edges of each side, where you'll attach the zipper next.
Step 4: Sew the Main Zipper
Now pin the zipper to the top of one side piece, right sides together, and stitch. Fold the side piece down and topstitch for strength. Attach the other side similarly.
If you'll be checking this through as baggage on an airplane, you can make a little loop at the end of the zipper where the zipper pull is when closed, to lock it to. It won't keep anyone out, but it will make it immediately obvious if it's been opened, and prevent the zipper from opening accidentally. Cut a small piece of fabric about 2" x 1". Fold the long edges towards the middle, then fold the whole thing in half, tucking the raw edges inside, and sew along the length. Then fold it in half and stitch it to the zipper pull end of the zipper as shown in the picture.
Step 5: Construct the Ends
If you're making a shoulder strap, now is the time to add the part it will hook to. Take one of your D-rings (or triangle rings) and feed about 4" of the nylon strap through it. Fold this back on itself and pin the strap, short side down, to the center of the end piece, on the outside. The D-ring should sit an inch or two below the top of the end piece. Sew this all down thoroughly, and cut the strap off at the bottom of the fabric. My pictures don't exactly match this because I did the next bit first, before I remembered I wanted shoulder straps, so I sewed these on from inside the pockets... not recommended!
Now you're ready to construct the inside pockets. Lay one zipper'd piece on top of one of the uncut end pieces, wrong sides together (so the shoulder strap bits are NOT in between). Stitch all the way around the edges - this will get sewn again so you don't need to go over it more than once. You may find that the zippered pieces are no longer the same size as the others. That's fine - just trim to fit.
Step 6: Construct the Bottom
Insert the plastic reinforcement to be sure it fits with a small amount of ease. Then take it out again; you'll sew three of the four remaining seams without the stiffness of the plastic impeding you.
If you haven't already, make sure the edges and corners of the plastic are reasonably smooth without roughness that might abrade the fabric and wear through unseasonably.
Sew each side of the bottom to one of the sides, being careful to stitch along the seam lines you already sewed on the bottom pieces. It doesn't really matter which side of the bottom pieces you sew to, but for the sides, make sure the right side is facing the bottom pieces. Using the wider seam binding, bind the seams.
Step 7: Put It All Together
For me, it's usually easier to have the curved part on top and the straight part underneath, but you may find the opposite. Once you've sewn the seam, go around again; then bind it using the wider seam allowance.
Now you have one end done. Before doing the last end, open the top zipper halfway or so, if it's closed - they're hard to unzip from the underneath and you're going to close off your access to the zipper pull.
You still don't quite need to slip the plastic piece in yet; you can put it off a little longer. Pin the other end piece the same way as the first, but only sew the areas where the side pieces go. Sew them twice. Also bind this area, starting near one of the bottom corners and leaving a tail of seam binding long enough to finish. NOW you can slip in the plastic piece and sew up the last seam (twice). And bind.
Turn the bag right-side out through the main zipper. Your duffel is complete! Admire it!
Step 8: Construct Shoulder Strap (optional)
You can also make a pad to ease your shoulder when carrying heavy things. You'll need something to be the padding - part of an old quilted jacket, a blanket, a piece of foam, anything squishy should do. Cut three oval pieces of your fabric about 6" long and an inch or so wider than your strap. Also cut one or two pieces of your padding a half inch smaller all round - enough padding to be enough, basically.
Cut the rounded ends off one of the three fabric pieces, fold down the short ends and stitch. This will be the bit that holds the strap to the padding. Now make a sandwich of all the parts, in this order:
- 1 fabric oval, right side down
- all the padding
- 1 fabric oval, right side up
- the non-oval, right side up