The folder structure is following:
debian-simple-repo
|-- Makefile
|-- Release.conf
`-- unstable    # files here generated
    |-- Packages
    |-- Packages.bz2
    |-- Packages.gz
    |-- Release
    |-- Release.gpg
    |-- Sources
    |-- Sources.bz2
    `-- Sources.gz
Makefile
all: repository
repository:
    dpkg-scanpackages unstable /dev/null > unstable/Packages
    dpkg-scansources  unstable /dev/null > unstable/Sources
	
    bzip2 -c9 unstable/Packages > unstable/Packages.bz2
    gzip -c9 unstable/Packages > unstable/Packages.gz
    bzip2 -c9 unstable/Sources  > unstable/Sources.bz2
    gzip -c9 unstable/Sources  > unstable/Sources.gz
	
    apt-ftparchive -c=Release.conf release unstable > unstable/Release
    -rm unstable/Release.gpg
    gpg -abs -o unstable/Release.gpg unstable/Release
clean:
    rm -f unstable/Packages* unstable/Sources* unstable/Release*
Release.conf
APT::FTPArchive::Release::Origin "your@email";
APT::FTPArchive::Release::Label "Test repository";
APT::FTPArchive::Release::Suite "unstable";
APT::FTPArchive::Release::Architectures "i386 source";
APT::FTPArchive::Release::Components "main";
generation
All *.deb, *.dsc, *.diff.gz, *.changes, *.orig.tar.gz has to
be copied to the unstable/ folder and `make` executed. This
will generate unstable/Packages*, unstable/Sources*, unstable/Release*
files. Then just the whole folder as-is copied to a web/ftp server. 
usage
/etc/apt/sources.list file on a Debian machine
has to be updated and a gpg key has to be added through `apt-key add`.
sources.list
deb http://your.hostname/some/folder/ unstable/
deb-src http://your.hostname/some/folder/ unstable/
beyond simple
For more advanced and more distribution like repository use reprepro. Setting up your own APT repository with upload support - is a good introduction to it.