One of the most important parts of applying to graduate school is identifying why you want to apply. What areas of mathematics interest you? Why go on to grad school instead of applying for a job elsewhere?
Since I was applying for the NSF GRFP, which was due in mid-October, I prepared my GRFP application first, then modified it for my graduate school applications. This was extraordinarily helpful for me, since it meant that the bulk of my graduate school applications were essentially finished by mid-October.
I found forums such as GradCafe very unhelpful in many respects, including actually putting together my applications and my mental health.
Timing and identifying programs
In August before my senior year, I put together a spreadsheet with all the programs I was interested in, application fees, deadlines, links to the program website and application portal, whether or not the program required the GRE (general or subject), how many recommendation letters were required, and the names of 3-5 faculty I was interested in working for. Looking for faculty in this way helped narrow down my list.
I contacted my recommenders several months in advance to ask for letters, and I sent them my CV and a draft of my personal statement ASAP. I also sent them a spreadsheet of the schools I was applying to, program names (I applied across a few subfields), and relevant deadlines.
My application materials
This is where it gets tricky. Each program has varying length restrictions and additional application materials. However, you can get a sense of my application materials from my NSF GRFP personal statement. For each program, I essentially cut down the personal statement to fit the length requirement and reflect the aspects of that program that attracted me there, including specific professors I wanted to work for. Feel free to contact me if you are curious about the statements I submitted for particular schools.