This paper presents constructions of DNA codes that satisfy biological and combinatorial constraints for DNA-based data storage systems. We introduce an algorithm that generates DNA blocks containing sequences that meet the required constraints for DNA codes. The constructed DNA sequences satisfy biological constraints: balanced GC-content, avoidance of secondary structures, and prevention of homopolymer runs. These sequences simultaneously satisfy combinatorial constraints that ensure differences among DNA sequences and their reverse and reverse-complement sequences. The DNA codes incorporate error correction through minimum Hamming distance requirements. We establish a bijective mapping between algebraic structures and DNA sequences, providing construction of DNA codes with specified characteristics. Using this framework, we construct DNA codes based on error-correcting codes, including Simplex and Reed-Muller codes. These constructions ensure DNA sequences avoid secondary structures and homopolymer runs exceeding length three, which cause errors in DNA storage systems. Concatenated sequences maintain these properties. The codes achieve non-vanishing code rates and minimum Hamming distances for large sequence lengths, demonstrating viability for DNA-based data storage systems.