CV Oluşturma Projesi
Bu projemde, bir formdan gelen kullanıcı verileri ile otomatik olarak bir CV oluşturulmaktadır ve oluşturulan CV'nin renk, şablon ve font özelliklerinde özelleştirme seçenekleri bulunmaktadır. Projede 6 farklı CV şablonu, 6 farklı font ve 7 farklı renk seçeneği bulunmaktadır. Bu seçenekler kolaylıkla arttırılabilir durumdadır. CV oluşturma sayfasında dark mode seçeneği de bulunmaktadır. Kullanıcılar CV'lerini ister light mode ister dark mode seçeneğine göre yazdırabilmektedirler.
Proje Yayını
Projeyi canlı olarak görmek ve kullanmak için createcv.kodsatirim.com adresini ziyaret edebilirsiniz. kodsatirim.com sitesi bana aittir.
Proje Geliştirilmesi ve Örnek Kodları
Projeyi geliştirirken Frontend tarafında Html/Css ve JavaScript, Backend tarafında ise PHP/PDO ve MySQL veritabanını kullandım. Kullanıcı verilerini saklamak ve CV şablonları içerisinde kullanabilmek için MySQL içerisinde bir veritabanı oluşturdum. Bu veritabanı içerisinde CV'ye yazılması gereken tüm veriler için tablolar oluşturdum.
Bir kullanıcı CV oluşturmadan CV şablonu seçme ve özelleştirme seçeneklerini kullanabilmektedir. Siteye giren kullanıcılar ilk olarak default verilerle doldurulmuş olan örnek CV içeriği ile CV şablonlarını test edebilmektedir. Default olarak gelen veriler dummy.php
dosyası içerisinde bulunmaktadır. CV içerisine yazılacak her veri bir değişkende veya çoklu olarak yazılacak veriler bir dizi içerisinde tutulmaktadır.
Default olarak oluşturulan verilere ait örnek kod çıktısı;
<?php
$name = "Name Surname";
$fetchSkillData = array(
array( "skillName" => "JavaScript", "skillLevel" => "85"),
array( "skillName" => "HTML/CSS", "skillLevel" => "92"),
array( "skillName" => "Photoshop", "skillLevel" => "70"),
array( "skillName" => "Adobe XD", "skillLevel" => "57"),
array( "skillName" => "Figma", "skillLevel" => "77"),
);
?>
CV oluşturma formunu dolduran kullanıcıların verilerini cvPost.php
dosyasında post ederek belirli değişkenlere atadım. Çoklu olabilecek değerleri bir dizi şeklinde post ettim ve veritabanına sıralı şekilde kaydettim.
PHP ile post işlemi yaptığım verilere ait örnek kod çıktısı;
<?php
$name = $_POST['name'];
for($i=0; $i < count($_POST['skillName']); $i++){
$skillName = $_POST['skillName'][$i];
$skillLevel = $_POST['skillLevel'][$i];
$addSkill = $data->prepare("insert into skills set
submission_id=?,
skillName=?,
skillLevel=?
");
$addSkillProcess = $addSkill->execute(array($submission_id,$skillName,$skillLevel));
// control process $i = error index
if(!$addSkillProcess){ errorMessage("Skill","2504-".$i); }
}
?>
Her kullanıcıya ait benzersiz bir submission_id
değeri belirledim ve bu değere ait verileri CV sayfasında çekerek tüm CV şablonları içerisinde yazdırdım. CV şablonları içerisine yazılacak her çoklu veri için functions.php
dosyasında birer fonksiyon oluşturdum ve tüm CV şablonlarında gerekli yerlerde fonksiyonu çağırdım.
Oluşturduğum fonksiyonlara ve kullanımlarına ait örnek bir kod çıktısı;
<?php
function getSkills($fetchSkillData,$tagName){
foreach($fetchSkillData as $key => $item){
echo '
<li>
<'.$tagName.'>'.$item['skillName'].'</'.$tagName.'>
<div class="level-bar">
<div class="level" style="width: '.$item['skillLevel'].'%;"></div>
</div>
</li>
';
}
}
?>
<div class="cv-section">
<h2 class="cv-title">Skills</h2>
<ul class="cv-list level-list">
<?php getSkills($fetchSkillData,'strong'); ?>
</ul>
</div>