Self-assembly is the process in which simple objects autonomously aggregate into large structures and it has become one of the major tools for nano-scale engineering. We propose in this paper a string-based framework inspired by the principle of self-assembly: two strings with a common overlap, say uv and vw, yield a string uvw; we say that string uvw has been assembled from strings uv and vw. The operation may be extended in a natural way also to sets of strings. We answer several questions: what is the assembly power of a given set of strings, can a given set of strings be generated through assembly and if so, what is a minimal generator for it?